java jdbc查询核心是connection→statement/preparedstatement→executequery()→resultset→遍历。1. 用drivermanager.getconnection()建连,url依数据库而异;2. 简单查询用statement,禁拼接防注入;3. 参数化查询必用preparedstatement设?占位;4. resultset需next()移动游标,用getxxx()取值,资源须try-with-resources关闭。

Java 中用 JDBC 执行普通 SQL 查询语句,核心是通过 Connection 获取 Statement 或 PreparedStatement,再调用 executeQuery() 方法获得 ResultSet,最后遍历结果。
1. 建立数据库连接
先加载驱动(JDBC 4.0+ 通常可省略),再用 DriverManager.getConnection() 获取连接。URL、用户名和密码需按数据库类型填写:
- MySQL 示例:
"jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC" - PostgreSQL:
"jdbc:postgresql://localhost:5432/mydb" - 注意:连接后务必在
finally或 try-with-resources 中关闭
2. 创建 Statement 并执行查询
对不带参数的简单查询,可用 Statement:
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name FROM users WHERE age > 25");
⚠️ 不推荐拼接字符串传参(易导致 SQL 注入),仅限固定、可信的 SQL。
3. 使用 PreparedStatement 防注入(推荐)
含变量的查询必须用 PreparedStatement,用 ? 占位,再用 setXxx() 赋值:
String sql = "SELECT * FROM users WHERE status = ? AND created_time > ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, "active");
ps.setTimestamp(2, Timestamp.valueOf("2024-01-01 00:00:00"));
ResultSet rs = ps.executeQuery();
这样既安全,又支持数据库预编译优化。
4. 处理查询结果
ResultSet 默认游标在第一行之前,需调用 next() 移动;用 getXXX() 按列名或序号取值:
while (rs.next()) {
int id = rs.getInt("id"); // 按列名
String name = rs.getString(2); // 按序号(第2列)
System.out.println(id + ": " + name);
}
记得关闭 ResultSet、Statement(或 PreparedStatement)和 Connection —— 推荐用 try-with-resources 自动释放。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











