Java如何高效获取数据库中的行数据?
- 后端开发
- 2025-05-28
- 5
在Java中获取数据库的行数据需要借助JDBC(Java Database Connectivity)技术,以下是详细操作步骤和示例代码,帮助开发者理解如何从数据库中读取数据。
准备工作
-
导入数据库驱动
根据使用的数据库类型(如MySQL、Oracle等),添加对应的JDBC驱动依赖。
Maven示例(MySQL):
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.28</version> </dependency> -
数据库连接信息
准备数据库URL、用户名和密码:
String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "123456";
建立数据库连接
使用DriverManager获取连接对象:
try { Connection connection = DriverManager.getConnection(url, user, password); // 后续操作... } catch (SQLException e) { e.printStackTrace(); }
执行SQL查询
通过Statement或PreparedStatement执行查询语句:
// 使用Statement(简单查询) Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("SELECT * FROM users"); // 使用PreparedStatement(推荐,防SQL载入) String sql = "SELECT * FROM users WHERE age > ?"; PreparedStatement pstmt = connection.prepareStatement(sql); pstmt.setInt(1, 18); // 设置参数 ResultSet resultSet = pstmt.executeQuery();
处理ResultSet结果集
ResultSet对象存储查询结果,通过循环逐行读取数据:

关闭资源
务必释放资源,避免内存泄漏:
resultSet.close(); statement.close(); // 或 pstmt.close(); connection.close();
完整代码示例
import java.sql.*; public class ReadDatabaseData { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/mydatabase"; String user = "root"; String password = "123456"; try (Connection connection = DriverManager.getConnection(url, user, password); PreparedStatement pstmt = connection.prepareStatement("SELECT * FROM users"); ResultSet resultSet = pstmt.executeQuery()) { while (resultSet.next()) { int id = resultSet.getInt("id"); String name = resultSet.getString("name"); System.out.println("User ID: " + id + ", Name: " + name); } } catch (SQLException e) { e.printStackTrace(); } } }
最佳实践与注意事项
-
使用Try-with-Resources
Java 7+支持自动关闭资源,避免手动调用close():
-
防SQL载入
优先使用PreparedStatement替代拼接SQL字符串。

-
处理异常
捕捉SQLException并记录日志,确保程序健壮性。
-
使用连接池
高并发场景下,推荐HikariCP或Druid等连接池管理数据库连接。
-
Q:ResultSet的getString()和getInt()有什么区别?
A:根据列的数据类型选择对应方法,例如整型列用getInt(),字符串列用getString()。
-
Q:如何获取查询结果的总行数?
A:通过SQL的COUNT(*)函数或遍历ResultSet并计数。
- JDBC官方文档:Oracle JDBC Guide
- MySQL Connector/J文档:MySQL Connector/J 8.0
- 数据库连接池推荐:HikariCP
常见问题
引用说明