功能:
- 代表查询结果对象
说明:
- 本文为了代码结构清晰 采用的是try-with-resource结构,请在java7下使用(或者自己改成传统模式)
- 具体使用请看例子,更多内容请看例子后的扩展阅读
部分API:
返回类型 | 方法名称 | 说明 |
---|---|---|
boolean | absolute(int row) | 移动指针到到指定的记录行 |
void | afterLast() | 移动指针到记录最后一条记录的后面 |
void | beforeFirst() | 移动指针到第一条记录的前面 |
void | close() | 关闭结果集,回收资源 |
void | deleteRow() | 从结果集中删除当前行记录 |
对应类型 | getXxx(...) | 从结果集获得对应类型的数据 |
ResultSetMetaData | getMetaData() | 获得结果集的相关信息对象 |
Statement | getStatement() | 获得产生当前ResultSet的Statement对象 |
void | insertRow() | 插入数据记录 |
boolean | isAfterLast() | 当前指针是否在最后记录的后面 |
boolean | isBeforeFirst() | 但前指针是否在第一条记录的前面 |
boolean | isClosed() | 判断是否已经关闭 |
boolean | isFirst() | 判断指针是否在第一条数据 |
boolean | isLast() | 判断指针是否在最后 |
boolean | last() | 移动指针到最后一条记录 |
void | moveToCurrentRow() | 移动指针到指针记忆的位置 常用在插入后返回当前行 |
void | moveToInsertRow() | 移动指针到插入行,开始插入数据 |
boolean | next() | 移动指针到下一条记录 |
boolean | previous() | 移动指针到上一条记录 |
boolean | relative(int rows) | 移动指针到相对位置 |
对应的类型 | updateXxx(...) | 更新记录某个字段 |
void | updateRow() | 更新记录到数据库 |
程序演示: 放大
- package com.cxy.jdbc;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.UUID;
- /**
- * @author cxy @ www.cxyapi.com
- */
- public class ResultSetTest
- {
- public static void main(String[] args)
- {
- try(
- Connection con=DriverManager.getConnection("jdbc:mysql://localhost/dbtest", "root", "root");
- PreparedStatement pstmt=con.prepareStatement("select * from t_student",
- ResultSet.TYPE_SCROLL_SENSITIVE,
- ResultSet.CONCUR_UPDATABLE);
- ResultSet rs=pstmt.executeQuery();
- )
- {
- rs.first(); //将指针移动到第一行
- System.out.println("当前记录指针指向行数:"+rs.getRow());
- rs.next(); //指针移动到下一行
- System.out.println("当前记录指针指向行数:"+rs.getRow());
- rs.last(); //将指针移动到最后行
- int rowNum=rs.getRow(); //指针在最后可以通过这个方法获取所有记录数
- System.out.println("查询结果记录数:"+rowNum);
- System.out.println("=======================================");
- //利用absolute遍历 移动光标到指定行 绝对定位
- for(int i=1;i<=rowNum;i++)
- {
- rs.absolute(i);
- System.out.println(i+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
- }
- System.out.println("=======================================");
- //relative 相对移动 相对当前指针位置移动,括号内的参数可正可负
- //rs.relative(1); 相当于 next();
- //re.relative(-1); 相当于 previous();
- System.out.println("当前行:"+rs.getRow());
- rs.relative(-1);
- System.out.println("移动后的当前行:"+rs.getRow());
- System.out.println("=======================================");
- //previous:移动光标到当前指针的前一个
- rs.previous();
- System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
- System.out.println("=======================================");
- //插入数据
- System.out.println("插入数据:");
- rs.moveToInsertRow(); //将指针移动到插入行,当前的位置将会被记住
- rs.updateString(1, UUID.randomUUID().toString().replace("-", ""));
- rs.updateString(2, "克隆人"+System.currentTimeMillis());
- rs.updateString(3, "男");
- rs.insertRow(); //必须和moveToInsertRow联合使用
- rs.moveToCurrentRow(); //做完插入操作后,将指针指回到插入状态前的行
- System.out.println("=======================================");
- //修改数据表
- System.out.println("修改数据:");
- rs.updateString(2, "小红-改");
- rs.updateRow();
- System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
- System.out.println("=======================================");
- //删除某行
- System.out.println("删除数据:");
- rs.deleteRow();
- System.out.println(rs.getRow()+":"+rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3));
- System.out.println("=======================================");
- //几个判断
- System.out.println("当前指针是否指向第一行?"+rs.isFirst());
- System.out.println("当前指针是否指向最后一行?"+rs.isLast());
- System.out.println("结果集是否已经关闭?"+rs.isClosed());
- rs.beforeFirst();
- System.out.println("当前指针是否在第一行的前面?"+rs.isBeforeFirst());
- rs.afterLast();
- System.out.println("当前指针是否在最后一行的后面?"+rs.isAfterLast());
- }catch(Exception e)
- {e.printStackTrace();
- System.out.println("数据库操作出现异常");
- }
- }
- /**
- * 打印ResultSet
- */
- public static void printResultSet(ResultSet rs2)
- {
- try
- {
- while(rs2.next())
- {
- System.out.println(rs2.getString(1)+"\t"+rs2.getString(2)+"\t"+rs2.getString(3));
- }
- } catch (SQLException e)
- {
- e.printStackTrace();
- }
- }
- }
转载于:https://blog.51cto.com/congwa/1163837