JDBC之Query查询操作
首先我们来想,每次查询数据库时,每次都是一条或多条记录集,而为了能够临时的用Java存储临时表记录集,就需要用到ResultSet 类集合
ResultSet 数据结果集
概念:
- 在执行查询SQL语句之后,存放查询到的结果集数据
- 接收结果集: ResultSet rs = statement.executeQuery(sql);
注意:
- 作用就是完成了查询结果的存储功能,而且只能读去一次,不能够来回的滚动读取。
遍历ResultSet集合
- ResultSet以表结构进行临时结果的存储,通过JDBC API将其中数据进行依次获取
- getXxx(“列名”)方法可以获取的类型有8大基本数据类型和引用类型,列名就是所查询表的对应列名。
通过JDBC执行 查询Read
public class TestQuery{
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/gp2002";
String user = "root";
String password = "root";
Connection connection = DriverManager.getConnection(url, user, password);
PreparedStatement preparedStatement = connection.prepareStatement();
// 查询语句
String sql = "select sno, name, password, gender, born, address from student;";
二选一: // 获得结果集,处理结果集,有两种方式,只能出现一种,建议采用第二种
ResultSet resultSet = preparedStatement .executeQuery(sql);
处理方式一: // 1、根据表的列名字获取对应的值
while (resultSet.next()) {
int sno = resultSet.getInt("sno");
String name = resultSet.getString("name");
String psd = resultSet.getString("password");
String gender = resultSet.getString("gender");
Date born = resultSet.getDate("born");
String address = resultSet.getString("address");
System.out.println(sno + " " + name + " " + psd + " " +
gender + " " + born + " " + address);
}
resultSet.close();
preparedStatement .close();
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
可以用下述while循环 的方式代替上述的while循环,但是这样就不能很好的知道表的列名。所代表的意思,所以尽量采用第一种。
处理方式二: // 2、根据表中列所在的index进行获取对应的值 下标从1开始
while (resultSet.next()){
int sno = resultSet.getInt(1);
String name = resultSet.getString(2);
String psd = resultSet.getString(3);
String gender = resultSet.getString(4);
Date born = resultSet.getDate(5);
String address = resultSet.getString(6);
System.out.println(sno + " " + name + " " + psd + " " +
gender + " " + born + " " + address);
}