JDBC—查询
一.执行查询语句
在执行查询语句前,需要创建数据库连接和Statement实例,然后调用executeQuery方法,查询结果会保存到ResultSet实例里面,代码如下:
public static void main(String[] args) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
try {
String url = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
connection = DriverManager.getConnection(url, "root", "123456");
statement = connection.createStatement();
String sql = "select * from user";
resultSet = statement.executeQuery(sql);
resultSet.beforeFirst();
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
} catch (Throwable t) {
t.printStackTrace();
} finally {
if (resultSet != null) {
resultSet.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
}
}
二.Statement
Statement接口用于执行SQL语句,获取Statement实例后,可以使用它执行数据库查询或数据库更新操作。
三.PreparedStatement
PreparedStatement是一种特殊的Statement对象,与Statement相比PreparedStatement具有更多的优点,具体如下:
- 易于将参数插入SQL语句中。
- 易于重用PreparedStatement新参数值。
- 可以提高已执行语句的性能。
- 实现更轻松的批量更新。
String sql = "select * from person where id=? and name=?";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "001");
preparedStatement.setString(2, "test");
四.ResultSet
ResultSet接口表示数据库查询的结果记录集,要迭代ResultSet可以使用next()方法,如果ResultSet具有下一条记录,则该方法返回true,并将指针移动到下一条记录,如果没有更多记录,则n返回false。如果想要访问每条记录的列值,可以通过调用getXXX()获取。