使用数据库操作对象对数据库的操作分为两类,一类是对数据库内容的增删改,另一类是对数据库内容的查询,因为查询数据库会从数据库服务器返回查询的结果,这个结果被封装到一个结果集之中,我们需要对这个结果集进行相应的操作来获取我们查询的数据。
代码演示:
package com.itheima.hui; import com.itheima.hui.utils.JDBCUtils; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; public class JDBCSelect { public static void main(String[] args) { //使用JDBC的查询操作 Connection connect = null; PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { //1.使用工具类过得连接对象 connect = JDBCUtils.getConnect(); String sql = "select * from student"; preparedStatement = connect.prepareStatement(sql); //执行查询操作返回值是一个结果集对象 resultSet = preparedStatement.executeQuery(); //遍历结果集 while (resultSet.next()) {//判断结果集中的下一行还有没有数据,有数据返回true并且指针下移,没有数据返回false,指针不再下移 /* String id = resultSet.getString(1);//索引的值是从1开始的,值得注意的是只要是和数据库交互的大部分的索引值都是从1开始的 String name = resultSet.getString(2); String age = resultSet.getString(3);*/ //当然我们也可以通过结果集的获取数据的重载方法获得数据 String id = resultSet.getString("id"); String name = resultSet.getString("name"); String age = resultSet.getString("age"); System.out.println(id + " " + " " + name + " " + age); } } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { //使用自定义工具类关闭资源 JDBCUtils.close(connect, preparedStatement, resultSet); } } }
对于结果集Resultset的解析:
当我们通过数据库查询数据的时候会返回相应的查询结果:
这个结果就被封装在Resultset结果集当中,在初始的时候,next();指针指向第一行真实数据的上面,如下图所示:
当我们在对结果集进行操作的时候使用resultSet.next(),会判断当前指针的下一行还有没有数据:
- 如果有:
- 返回值为true
- 并且next();指针向下移动一行
- 如果没有
- 返回值为false,指针不再向下移动
当我们经过判断获得true的时候,我们就需要对数据进行获取的操作,在上面的代码中有详细的操作和解释。