服务器测评网
我们一直在努力

java 怎么连mysql

要实现Java与MySQL数据库的连接,需完成环境准备、驱动配置、代码编写及异常处理等步骤,以下是具体操作流程和关键注意事项。

环境准备

  1. MySQL数据库安装与配置
    确保已安装MySQL数据库(建议5.7及以上版本),并创建测试数据库及表,通过MySQL命令行执行:

    CREATE DATABASE test_db;  
    USE test_db;  
    CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT);  
    INSERT INTO users (name, age) VALUES ("张三", 25), ("李四", 30);  

    记录数据库连接信息:主机名(默认localhost)、端口(默认3306)、用户名(默认root)及密码。

  2. Java开发环境
    安装JDK(建议1.8及以上版本)并配置环境变量,确保可通过java -version命令验证安装成功。

JDBC驱动配置

Java通过JDBC(Java Database Connectivity)规范连接MySQL,需加载MySQL官方提供的JDBC驱动。

  1. 驱动下载
    访问MySQL官网下载Connector/J驱动(如mysql-connector-java-8.0.33.jar),或通过Maven/Gradle依赖管理工具自动下载。

  2. 项目依赖配置

    • Maven项目:在pom.xml中添加依赖:
      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.33</version>
      </dependency>
    • Gradle项目:在build.gradle中添加:
      implementation 'mysql:mysql-connector-java:8.0.33'

      若使用手动下载的JAR包,需将其添加到项目的类路径(Classpath)中。

Java连接MySQL代码实现

连接过程分为“加载驱动—建立连接—执行SQL—处理结果—关闭资源”五个步骤,以下为完整示例代码:

import java.sql.*;
public class MySQLConnectionDemo {
    public static void main(String[] args) {
        // 1. 定义数据库连接信息
        String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8";
        String username = "root";
        String password = "your_password"; // 替换为实际密码
        // 2. 声明JDBC对象(Connection、Statement、ResultSet)
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            // 3. 加载JDBC驱动(MySQL 8.0+驱动类名)
            Class.forName("com.mysql.cj.jdbc.Driver");
            System.out.println("驱动加载成功");
            // 4. 建立数据库连接
            conn = DriverManager.getConnection(url, username, password);
            System.out.println("数据库连接成功");
            // 5. 创建Statement对象(用于执行SQL)
            stmt = conn.createStatement();
            String sql = "SELECT id, name, age FROM users";
            rs = stmt.executeQuery(sql); // 执行查询SQL
            // 6. 处理结果集
            System.out.println("查询结果:");
            while (rs.next()) {
                int id = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                System.out.printf("ID: %d, 姓名: %s, 年龄: %d%n", id, name, age);
            }
        } catch (ClassNotFoundException e) {
            System.err.println("驱动加载失败:" + e.getMessage());
        } catch (SQLException e) {
            System.err.println("数据库操作异常:" + e.getMessage());
        } finally {
            // 7. 关闭资源(按ResultSet、Statement、Connection顺序关闭)
            try {
                if (rs != null) rs.close();
                if (stmt != null) stmt.close();
                if (conn != null) conn.close();
                System.out.println("资源关闭成功");
            } catch (SQLException e) {
                System.err.println("资源关闭异常:" + e.getMessage());
            }
        }
    }
}

关键注意事项

  1. 驱动类名差异
    MySQL 5.x版本驱动类名为com.mysql.jdbc.Driver,8.x版本改为com.mysql.cj.jdbc.Driver,需根据驱动版本选择。

  2. URL参数配置

    • useSSL=false:禁用SSL连接(开发环境可关闭,生产环境建议开启)。
    • serverTimezone=UTC:设置时区,避免“时区错误”异常。
    • characterEncoding=UTF-8:指定字符集,防止中文乱码。
  3. SQL注入防护
    避免直接拼接SQL字符串,推荐使用PreparedStatement预处理语句(示例中使用Statement仅作演示)。

    String sql = "SELECT * FROM users WHERE name = ?";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, "张三");
    rs = pstmt.executeQuery();
  4. 连接池优化
    高并发场景下,频繁创建/关闭连接会导致性能问题,建议使用HikariCP、Druid等连接池管理数据库连接,例如HikariCP配置示例:

    HikariConfig config = new HikariConfig();
    config.setJdbcUrl("jdbc:mysql://localhost:3306/test_db");
    config.setUsername("root");
    config.setPassword("your_password");
    HikariDataSource ds = new HikariDataSource(config);
    Connection conn = ds.getConnection();
  5. 异常处理与资源释放
    数据库操作可能抛出SQLException,需通过try-catch-finally捕获异常并确保资源(ResultSetStatementConnection)关闭,避免资源泄漏,推荐使用Java 7+的try-with-resources语句自动关闭资源:

    try (Connection conn = DriverManager.getConnection(url, username, password);
         Statement stmt = conn.createStatement();
         ResultSet rs = stmt.executeQuery(sql)) {
        // 处理结果集
    } catch (SQLException e) {
        e.printStackTrace();
    }

通过以上步骤,即可实现Java与MySQL数据库的稳定连接,实际开发中,还需根据业务需求调整SQL逻辑,并结合连接池、事务管理机制优化性能。

赞(0)
未经允许不得转载:好主机测评网 » java 怎么连mysql