java如何取出数据库数据
使用JDBC连接数据库
确保已加载JDBC驱动,建立数据库连接。以MySQL为例,驱动类名为com.mysql.cj.jdbc.Driver,连接URL格式为jdbc:mysql://hostname:port/database。
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/mydb",
"username",
"password"
);
创建Statement执行查询
通过Connection对象创建Statement或PreparedStatement,后者适合参数化查询防止SQL注入。
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
// 或使用预编译语句
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ?");
pstmt.setInt(1, 1001);
ResultSet rs = pstmt.executeQuery();
处理ResultSet结果集
遍历ResultSet获取数据,注意列名或索引从1开始。
while (rs.next()) {
int id = rs.getInt("id"); // 通过列名获取
String name = rs.getString(2); // 通过列索引获取
System.out.println(id + ", " + name);
}
关闭资源
按顺序关闭ResultSet、Statement和Connection,推荐使用try-with-resources自动管理。
try (Connection conn = DriverManager.getConnection(url, user, pass);
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery()) {
// 处理结果
} catch (SQLException e) {
e.printStackTrace();
}
使用ORM框架简化操作
对于复杂项目,可采用Hibernate或MyBatis等框架。以MyBatis为例,配置Mapper接口后直接调用方法。
// 定义Mapper接口
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(int id);
}
// 通过SqlSession调用
SqlSession session = sqlSessionFactory.openSession();
UserMapper mapper = session.getMapper(UserMapper.class);
User user = mapper.getUserById(1001);
注意事项
数据库连接需处理异常,确保资源释放。使用连接池(如HikariCP)提升性能。SQL语句避免拼接字符串,优先参数化查询。







