1、ResultSet(结果集)
- 在执行查询SQL后,存放查询到的结果集数据。
1.1、接收结果集
String querySql = "SELECT Name,LoginName FROM Students"; ResultSet rs = null; try { rs = statement.executeQuery(querySql); } catch (SQLException sqlException) { sqlException.printStackTrace(); }
1.2、遍历ResultSet中的数据
ResultSet以表(table)结构进行临时数据的存储,需要通过JDBC AP将其中数据进行依次获取。
- 数据行指针:初始位置在第一行数据前,没调用一次boolean next()方法后,ResultSet的指针向下移动一行,结果为true,表示当前有数据。
- rs.getXxx(整数):代表根据列的编号顺序获得,从1开始,比如数据库表中有三个字段,第一个是String类的Name,那么getString(1)就会取出当前列列Name的值。
- rs.getXxx(“列名”):代表根据列名获得。
- Boolean next():判断rs结果集中下一行是否有数据。
1.2.1、遍历方法
try { while (rs.next()) { //通过列名获取 String name1 = rs.getString("Name"); String loginName1 = rs.getString("LoginName"); System.out.println("姓名:" + name1 + ",登录名:" + loginName1); //通过编号获取 String name2 = rs.getString(1); String loginName2 = rs.getString(2); System.out.println("姓名:" + name1 + ",登录名:" + loginName1); } } catch (SQLException sqlException) { sqlException.printStackTrace(); }
注意、不是只可以获取String类型,可以是各种类型的,要根据数据库中字段类型来获取,比如:
- int getInt(int columnIndex) throws SQLexception
- int getInt(String columnLabel) throws SQLexception
- double getDouble(int columnIndex) throws SQLexception
- double getDouble(String columnLabel) throws SQLexception
................
注意、列的编号从1开始。不是0,和数组不一样。
1.3、综合案例,查询Students表中的Name和LoginName
try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } Connection conn = null; String url = "jdbc:sqlserver://localhost:1433;databaseName=StudentManage"; try { conn = DriverManager.getConnection(url, "sa", "sql2012"); } catch (SQLException sqlException) { sqlException.printStackTrace(); } Statement statement = null; try { statement = conn.createStatement(); } catch (SQLException sqlException) { sqlException.printStackTrace(); } String querySql = "SELECT Name,LoginName FROM Students"; ResultSet rs = null; try { rs = statement.executeQuery(querySql); } catch (SQLException sqlException) { sqlException.printStackTrace(); } try { while (rs.next()) { //通过列名获取 String name1 = rs.getString("Name"); String loginName1 = rs.getString("LoginName"); System.out.println("姓名:" + name1 + ",登录名:" + loginName1); //通过编号获取 String name2 = rs.getString(1); String loginName2 = rs.getString(2); System.out.println("姓名:" + name1 + ",登录名:" + loginName1); } } catch (SQLException sqlException) { sqlException.printStackTrace(); } try { rs.close(); statement.close(); conn.close(); } catch (SQLException sqlException) { sqlException.printStackTrace(); }