JDBC结果集

SQL语句执行后从数据库查询读取数据,返回的数据放在结果集中。 SELECT语句用于从数据库中选择行并在结果集中查看它们的标准方法。 java.sql.ResultSet接口表示数据库查询的结果集。
ResultSet对象维护指向结果集中当前行的游标。 术语“结果集”是指包含在ResultSet对象中的行和列数据。
浏览方法:用于移动光标。
获取方法:用于查看光标指向的当前行的列中的数据。
更新方法:用于更新当前行的列中的数据。 然后在基础数据库中更新数据
光标可以基于ResultSet的属性移动。当创建生成ResultSet的相应Statement时,将指定这些属性
JDBC提供以下连接方法来创建具有所需ResultSet的语句 -

createStatement(int RSType, int RSConcurrency);
prepareStatement(String SQL, int RSType, int RSConcurrency);
prepareCall(String sql, int RSType, int RSConcurrency);

 

第一个参数表示ResultSet对象的类型,第二个参数是两个ResultSet常量之一,用于指定结果集是只读还是可更新
ResultSet类型参数类型:可能的RSType值如下。如果不指定任何ResultSet类型,将自动分配一个TYPE_FORWARD_ONLY值。

可能的RSConcurrency如下。 如果不指定任何并发类型,将自动获得一个CONCUR_READ_ONLY值。

到目前为止我们写的所有例子可以写成如下,它初始化一个Statement对象来创建一个只向前的只读ResultSet对象 -

try {
   Statement stmt = conn.createStatement(
                           ResultSet.TYPE_FORWARD_ONLY,
                           ResultSet.CONCUR_READ_ONLY);
}
catch(Exception ex) {
   ....
}
finally {
   ....
}

浏览结果集
ResultSet接口中有几种涉及移动光标的方法,包括 -

查看结果集
ResultSet接口包含数十种获取当前行数据的方法。
每个可能的数据类型都有一个get方法,每个get方法有两个版本 -
一个是采用列名称。
另一个采用列索引

类似地,在八个Java基元类型中的每一个的ResultSet接口中都有get方法,以及常见的类型,如java.lang.String,java.lang.Object和java.net.URL等。
还有一些方法可以获取SQL数据类型java.sql.Date,java.sql.Time,java.sql.TimeStamp,java.sql.Clob和java.sql.Blob。查看文档以获取有关使用这些SQL数据类型的更多信息。
更新结果集
ResultSet接口包含用于更新结果集的数据的更新方法的集合
与get方法一样,每种数据类型都有两种更新方法 - 
一个是采用列名称。
另一个采用列索引。

有八种基本数据类型的更新方法,以及java.sql包中的String,Object,URL和SQL数据类型。更新结果集中的一行会更改ResultSet对象中当前行的列,但不会更改底层数据库中的列的值。 要更新数据库中的行,需要调用以下方法之一。
 

String sql = "SELECT id, first, last, age FROM Employees";
      ResultSet rs = stmt.executeQuery(sql);

      System.out.println("List result set for reference....");
      printRs(rs);

      //STEP 6: Loop through result set and add 5 in age
      //Move to BFR postion so while-loop works properly
      rs.beforeFirst();
      //STEP 7: Extract data from result set
      while(rs.next()){
         //Retrieve by column name
         int newAge = rs.getInt("age") + 5;
         rs.updateDouble( "age", newAge );
         rs.updateRow();
      }
      System.out.println("List result set showing new ages...");
      printRs(rs);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值