一、准备工作
安装MySQL数据库
确保已安装MySQL服务器并启动服务下载JDBC驱动
- 官方驱动:MySQL Connector/J
- Maven依赖:
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency>
二、基础连接步骤
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MySQLDemo {
// 数据库信息
static final String URL = "jdbc:mysql://localhost:3306/mydatabase";
static final String USER = "root";
static final String PASSWORD = "123456";
public static void main(String[] args) {
Connection conn = null;
try {
// 1. 加载驱动(JDBC 4.0+ 可自动加载)
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 建立连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
// 3. 使用连接进行数据库操作
System.out.println("连接成功!");
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
// 4. 关闭连接
try {
if(conn != null) conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
三、关键参数说明
连接URL格式
jdbc:mysql://[host][:port]/[database][?参数]
- 常用参数:
useSSL=false
禁用SSL(开发环境建议)serverTimezone=UTC
设置时区characterEncoding=utf8
字符编码
- 常用参数:
推荐完整URL
String URL = "jdbc:mysql://localhost:3306/mydatabase?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8";
四、执行SQL操作
1. 查询数据示例
Statement stmt = null;
ResultSet rs = null;
try {
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT id, name FROM users");
while(rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
System.out.println(id + ": " + name);
}
} finally {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
}
2. 使用PreparedStatement(推荐)
String sql = "INSERT INTO users(name, age) VALUES(?, ?)";
try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "张三");
pstmt.setInt(2, 25);
int rows = pstmt.executeUpdate();
System.out.println("插入" + rows + "条记录");
}
五、事务管理
try {
conn.setAutoCommit(false); // 关闭自动提交
// 执行多个SQL操作...
conn.commit(); // 提交事务
} catch (SQLException e) {
try {
conn.rollback(); // 回滚事务
} catch (SQLException ex) {
ex.printStackTrace();
}
e.printStackTrace();
} finally {
conn.setAutoCommit(true); // 恢复自动提交
}
六、常见问题排查
驱动加载失败
- 确认jar包已正确添加到classpath
- 检查驱动类名是否正确(新版使用
com.mysql.cj.jdbc.Driver
)
连接超时
- 检查MySQL服务是否运行
- 验证用户名/密码是否正确
- 检查防火墙设置
时区问题
// 在连接URL中添加时区参数 ?serverTimezone=Asia/Shanghai
七、连接池推荐
对于生产环境,建议使用连接池:
- HikariCP(性能最佳)
- Druid(阿里出品,带监控功能)
HikariCP简单示例:
HikariConfig config = new HikariConfig();
config.setJdbcUrl(URL);
config.setUsername(USER);
config.setPassword(PASSWORD);
try (HikariDataSource ds = new HikariDataSource(config);
Connection conn = ds.getConnection()) {
// 使用连接...
}