功能:

  1. 代表查询结果对象

 

说明:

  1. 本文为了代码结构清晰 采用的是try-with-resource结构,请在java7下使用(或者自己改成传统模式)
  2. 具体使用请看例子,更多内容请看例子后的扩展阅读

 

部分API:

返回类型方法名称说明
booleanabsolute(int row)移动指针到到指定的记录行
voidafterLast()移动指针到记录最后一条记录的后面
voidbeforeFirst()移动指针到第一条记录的前面
voidclose()关闭结果集,回收资源
voiddeleteRow()从结果集中删除当前行记录
对应类型getXxx(...)从结果集获得对应类型的数据
ResultSetMetaDatagetMetaData()获得结果集的相关信息对象
StatementgetStatement()获得产生当前ResultSet的Statement对象
voidinsertRow()插入数据记录
booleanisAfterLast()当前指针是否在最后记录的后面
booleanisBeforeFirst()但前指针是否在第一条记录的前面
booleanisClosed()判断是否已经关闭
booleanisFirst()判断指针是否在第一条数据
booleanisLast()判断指针是否在最后
booleanlast()移动指针到最后一条记录
voidmoveToCurrentRow()移动指针到指针记忆的位置
常用在插入后返回当前行
voidmoveToInsertRow()移动指针到插入行,开始插入数据
booleannext()移动指针到下一条记录
booleanprevious()移动指针到上一条记录
booleanrelative(int rows)移动指针到相对位置
对应的类型updateXxx(...)更新记录某个字段
voidupdateRow()更新记录到数据库

 

程序演示: 放大

  1. package com.cxy.jdbc;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.PreparedStatement;  
  6. import java.sql.ResultSet;  
  7. import java.sql.SQLException;  
  8. import java.util.UUID;  
  9.   
  10. /** 
  11.  * @author cxy @ www.cxyapi.com 
  12.  */  
  13. public class ResultSetTest  
  14. {  
  15.     public static void main(String[] args)  
  16.     {  
  17.         try(  
  18.                 Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest""root""root");  
  19.                 PreparedStatement pstmt=con.prepareStatement("select * from t_student",   
  20.                                                              ResultSet.TYPE_SCROLL_SENSITIVE,  
  21.                                                              ResultSet.CONCUR_UPDATABLE);  
  22.                 ResultSet rs=pstmt.executeQuery();  
  23.            )  
  24.            {  
  25.                 rs.first(); //将指针移动到第一行  
  26.                 System.out.println("当前记录指针指向行数:"+rs.getRow());   
  27.                 rs.next(); //指针移动到下一行  
  28.                 System.out.println("当前记录指针指向行数:"+rs.getRow());  
  29.                 rs.last();  //将指针移动到最后行  
  30.                 int rowNum=rs.getRow(); //指针在最后可以通过这个方法获取所有记录数  
  31.                 System.out.println("查询结果记录数:"+rowNum);  
  32.                 System.out.println("=======================================");  
  33.                   
  34.                 //利用absolute遍历 移动光标到指定行 绝对定位  
  35.                 for(int i=1;i<=rowNum;i++)  
  36.                 {  
  37.                     rs.absolute(i);  
  38.                     System.out.println(i+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));  
  39.                 }  
  40.                 System.out.println("=======================================");  
  41.                   
  42.                 //relative 相对移动  相对当前指针位置移动,括号内的参数可正可负  
  43.                 //rs.relative(1); 相当于 next();  
  44.                 //re.relative(-1); 相当于 previous();  
  45.                 System.out.println("当前行:"+rs.getRow());  
  46.                 rs.relative(-1);  
  47.                 System.out.println("移动后的当前行:"+rs.getRow());  
  48.                 System.out.println("=======================================");  
  49.                   
  50.                 //previous:移动光标到当前指针的前一个  
  51.                 rs.previous();  
  52.                 System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));  
  53.                 System.out.println("=======================================");  
  54.                   
  55.                 //插入数据  
  56.                 System.out.println("插入数据:");  
  57.                 rs.moveToInsertRow();  //将指针移动到插入行,当前的位置将会被记住  
  58.                 rs.updateString(1, UUID.randomUUID().toString().replace("-"""));  
  59.                 rs.updateString(2"克隆人"+System.currentTimeMillis());  
  60.                 rs.updateString(3"男");  
  61.                 rs.insertRow(); //必须和moveToInsertRow联合使用  
  62.                 rs.moveToCurrentRow(); //做完插入操作后,将指针指回到插入状态前的行  
  63.                 System.out.println("=======================================");  
  64.                   
  65.                 //修改数据表  
  66.                 System.out.println("修改数据:");  
  67.                 rs.updateString(2"小红-改");  
  68.                 rs.updateRow();  
  69.                 System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));  
  70.                 System.out.println("=======================================");  
  71.                   
  72.                 //删除某行  
  73.                 System.out.println("删除数据:");  
  74.                 rs.deleteRow();  
  75.                 System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));  
  76.                 System.out.println("=======================================");  
  77.                   
  78.                 //几个判断  
  79.                 System.out.println("当前指针是否指向第一行?"+rs.isFirst());  
  80.                 System.out.println("当前指针是否指向最后一行?"+rs.isLast());  
  81.                 System.out.println("结果集是否已经关闭?"+rs.isClosed());  
  82.                 rs.beforeFirst();  
  83.                 System.out.println("当前指针是否在第一行的前面?"+rs.isBeforeFirst());  
  84.                 rs.afterLast();  
  85.                 System.out.println("当前指针是否在最后一行的后面?"+rs.isAfterLast());  
  86.                   
  87.            }catch(Exception e)  
  88.            {e.printStackTrace();  
  89.                System.out.println("数据库操作出现异常");  
  90.            }  
  91.     }  
  92.       
  93.     /** 
  94.      * 打印ResultSet 
  95.      */  
  96.     public  static void printResultSet(ResultSet rs2)  
  97.     {  
  98.         try  
  99.         {  
  100.             while(rs2.next())  
  101.             {  
  102.                 System.out.println(rs2.getString(1)+"\t"+rs2.getString(2)+"\t"+rs2.getString(3));  
  103.             }  
  104.         } catch (SQLException e)  
  105.         {  
  106.             e.printStackTrace();  
  107.         }  
  108.     }  
  109.   
  110. }