学科分类
目录
Java Web

ResultSet对象

在之前所讲解的ResultSet操作中,ResultSet主要用于存储结果集,并且只能通过next()方法由前向后逐个获取结果集中的数据。但是,如果想获取结果集中任意位置的数据,则需要在创建Statement对象时,设置两个ResultSet定义的常量,具体设置方式如下:

   Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENITIVE, ResultSet.CONCUR_READ_ONLY);

   ResultSet rs = st.excuteQuery(sql);

在上述方式中,常量“Result.TYPE_SCROLL_INSENITIVE”表示结果集可滚动,常量“ResultSet.CONCUR_READ_ONLY”表示以只读形式打开结果集。

为了大家更好地学习ResultSet对象的使用,接下来,通过一个案例来演示如何使用ResultSet对象滚动读取结果集中的数据,如例1所示。

例1 Example04.java

 1  package cn.itcast.jdbc.example;

 2  import java.sql.Connection;

 3  import java.sql.DriverManager;

 4  import java.sql.ResultSet;

 5  import java.sql.SQLException;

 6  import java.sql.Statement;

 7  public class Example04 {

 8    public static void main(String[] args) {

 9      Connection conn = null;

 10     Statement stmt = null;

 11     try {

 12       Class.forName("com.mysql.jdbc.Driver");

 13       String url = "jdbc:mysql://localhost:3306/chapter01";

 14       String username = "root";

 15       String password = "itcast";

 16       conn = DriverManager.getConnection(url, username, password);

 17       String sql = "select * from users";

 18       Statement st =conn.createStatement(

 19           ResultSet.TYPE_SCROLL_INSENSITIVE, 

 20           ResultSet.CONCUR_READ_ONLY);

 21       ResultSet rs = st.executeQuery(sql);

 22       System.out.print("第2条数据的name值为:");

 23       rs.absolute(2);    //将指针定位到结果集中第2行数据

 24       System.out.println(rs.getString("name"));

 25       System.out.print("第1条数据的name值为:");

 26       rs.beforeFirst();   //将指针定位到结果集中第1行数据之前

 27       rs.next();       //将指针向后滚动

 28       System.out.println(rs.getString("name"));

 29       System.out.print("第4条数据的name值为:");

 30       rs.afterLast();    //将指针定位到结果集中最后一条数据之后

 31       rs.previous();     //将指针向前滚动

 32       System.out.println(rs.getString("name"));

 33     } catch (Exception e) {

 34       e.printStackTrace();

 35     } finally { // 释放资源

 36       if (stmt != null) {

 37         try {

 38           stmt.close();

 39         } catch (SQLException e) {

 40           e.printStackTrace();

 41         }

 42         stmt = null;

 43       }

 44       if (conn != null) {

 45         try {

 46           conn.close();

 47         } catch (SQLException e) {

 48           e.printStackTrace();

 49         }

 50         conn = null;

 51       }

 52     }

 53   }

 54 }

程序的运行结果如图1所示。

图1 运行结果

从图1中可以看出,程序输出了结果集中指定的数据。由此可见,使用ResultSet对象处理结果集是相当灵活的。

点击此处
隐藏目录