贝博恩创新科技网

Java如何连接MySQL数据库?

Java连接MySQL数据库是Java开发中常见的操作,主要通过JDBC(Java Database Connectivity)实现,以下是详细的步骤和代码示例,帮助开发者顺利完成连接。

Java如何连接MySQL数据库?-图1
(图片来源网络,侵删)

环境准备

  1. 安装MySQL数据库:确保已安装MySQL并运行,创建测试数据库和表。
    CREATE DATABASE test_db;
    USE test_db;
    CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
  2. 下载MySQL JDBC驱动:从MySQL官网或Maven仓库获取驱动JAR文件(如mysql-connector-java-8.0.xx.jar),若使用Maven,在pom.xml中添加依赖:
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>

JDBC连接步骤

加载驱动

通过Class.forName()加载MySQL驱动类(JDBC 8.0+版本可省略此步骤,但建议保留兼容性):

Class.forName("com.mysql.cj.jdbc.Driver");

获取连接

使用DriverManager.getConnection()方法,需提供数据库URL、用户名和密码:

String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "your_password";
Connection conn = DriverManager.getConnection(url, user, password);

参数说明

  • url:格式为jdbc:mysql://主机名:端口/数据库名?参数useSSL=false禁用SSL(开发环境),serverTimezone=UTC设置时区。
  • userpassword:MySQL数据库的登录凭据。

创建执行语句

通过Connection对象创建StatementPreparedStatement

Java如何连接MySQL数据库?-图2
(图片来源网络,侵删)
Statement stmt = conn.createStatement();

执行SQL查询

以查询users表为例:

String sql = "SELECT * FROM users";
ResultSet rs = stmt.executeQuery(sql);

处理结果集

遍历ResultSet获取数据:

while (rs.next()) {
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("ID: " + id + ", Name: " + name);
}

关闭资源

按顺序关闭ResultSetStatementConnection

rs.close();
stmt.close();
conn.close();

完整代码示例

import java.sql.*;
public class MySQLConnection {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC";
        String user = "root";
        String password = "your_password";
        try {
            // 1. 加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 2. 获取连接
            Connection conn = DriverManager.getConnection(url, user, password);
            System.out.println("数据库连接成功!");
            // 3. 创建执行语句
            Statement stmt = conn.createStatement();
            String sql = "SELECT * FROM users";
            ResultSet rs = stmt.executeQuery(sql);
            // 4. 处理结果集
            System.out.println("查询结果:");
            while (rs.next()) {
                System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name"));
            }
            // 5. 关闭资源
            rs.close();
            stmt.close();
            conn.close();
        } catch (ClassNotFoundException e) {
            System.err.println("MySQL驱动未找到!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.err.println("数据库连接或查询失败!");
            e.printStackTrace();
        }
    }
}

常见问题处理

  1. 驱动加载失败:检查JAR包是否正确引入,驱动类名是否为com.mysql.cj.jdbc.Driver(8.0+版本)。
  2. 连接超时:确保MySQL服务运行,检查防火墙或网络配置,或调整url中的connectTimeout参数(如?connectTimeout=5000)。

使用连接池优化性能

频繁创建和关闭连接会影响性能,推荐使用连接池(如HikariCP):

Java如何连接MySQL数据库?-图3
(图片来源网络,侵删)
  1. 添加HikariCP依赖:
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>5.0.1</version>
    </dependency>
  2. 配置连接池:
    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();

相关问答FAQs

问题1:MySQL连接时出现“Access denied for user”错误怎么办?
解答:该错误通常是由于用户名或密码错误,或用户没有访问指定数据库的权限,请检查MySQL用户权限,确保已授予GRANT ALL PRIVILEGES ON test_db.* TO 'root'@'localhost';,并确认密码正确。

问题2:如何处理MySQL连接中的时区问题?
解答:在JDBC URL中添加serverTimezone=UTC参数明确指定时区,例如jdbc:mysql://localhost:3306/test_db?serverTimezone=UTC,若需其他时区(如Asia/Shanghai),替换UTC即可。

分享:
扫描分享到社交APP
上一篇
下一篇