Java JDBC快速上手教程
- 后端开发
- 2025-06-28
- 7
Java JDBC编程详解
JDBC(Java Database Connectivity)是Java用于连接和操作数据库的标准API,它提供了一套接口,允许开发者通过统一的SQL语法与不同数据库(如MySQL、Oracle、PostgreSQL等)交互,以下是JDBC的核心步骤和最佳实践,适用于Java 8及以上版本。
JDBC核心步骤
-
加载数据库驱动
使用Class.forName()加载JDBC驱动(Java 6+可省略,但显式声明更可靠):
-
建立数据库连接
通过DriverManager.getConnection()获取连接,需指定URL、用户名和密码:
String url = "jdbc:mysql://localhost:3306/test_db?useSSL=false&serverTimezone=UTC"; String user = "root"; String password = "123456"; Connection connection = DriverManager.getConnection(url, user, password); -
创建Statement对象
推荐使用PreparedStatement防止SQL载入:
String sql = "SELECT * FROM users WHERE id = ?"; PreparedStatement statement = connection.prepareStatement(sql); statement.setInt(1, 101); // 设置参数(索引从1开始) -
执行SQL语句

- 查询操作:使用executeQuery()返回ResultSet ResultSet resultSet = statement.executeQuery();
- 更新操作:使用executeUpdate()返回影响行数 int rows = statement.executeUpdate();
-
处理结果集
遍历ResultSet获取数据:
while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println("ID: " + id + ", Name: " + name); } -
关闭资源
按ResultSet → Statement → Connection顺序关闭,避免资源泄漏:
resultSet.close(); statement.close(); connection.close(); -
异常处理
用try-catch-finally或try-with-resources(推荐)确保资源关闭:


-
防SQL载入
禁止拼接SQL!必须用PreparedStatement传参:
// 错误示例:String sql = "SELECT * FROM users WHERE name='" + inputName + "'"; PreparedStatement stmt = connection.prepareStatement("SELECT * FROM users WHERE name=?"); stmt.setString(1, inputName); // 安全
-
连接池优化
生产环境使用连接池(如HikariCP、Tomcat JDBC)提升性能:
HikariConfig config = new HikariConfig(); config.setJdbcUrl(url); config.setUsername(user); config.setPassword(password); try (HikariDataSource dataSource = new HikariDataSource(config); Connection conn = dataSource.getConnection()) { // 操作数据库 } - 驱动类找不到:
检查JAR包是否引入(如MySQL添加mysql-connector-java-8.0.30.jar)。
- 时区错误:
URL中添加?serverTimezone=UTC。
- 连接超时:
检查数据库地址、端口、防火墙设置。
- 使用ORM框架:
大型项目推荐MyBatis或Hibernate,简化CRUD操作。
- Spring JDBC模板:
利用JdbcTemplate减少样板代码。
- 事务管理:
通过connection.setAutoCommit(false)和commit()/rollback()控制事务。
- JDBC规范参考Oracle官方文档
- MySQL驱动配置详见MySQL Connector/J文档
- 连接池配置参考HikariCP GitHub
关键注意事项
完整代码示例(MySQL)
import java.sql.*; public class JdbcDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/test_db"; String user = "root"; String password = "123456"; try (Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement stmt = conn.prepareStatement("SELECT name, email FROM users WHERE id = ?")) { stmt.setInt(1, 1001); // 设置查询参数 ResultSet rs = stmt.executeQuery(); while (rs.next()) { System.out.println("Name: " + rs.getString("name") + ", Email: " + rs.getString("email")); } } catch (SQLException e) { System.err.println("数据库错误: " + e.getMessage()); } } }
常见问题解决
进阶建议
引用说明:
掌握JDBC是Java开发者操作数据库的基石,遵循以上实践可确保代码安全、高效,并为后续学习ORM框架打下坚实基础。