JAVA基础 之 ResultSet
程序员文章站
2022-03-02 08:48:53
...
概述:
1.ResultSet:代表查询结果对象
2.类型:
ResultSet.TYPE_FORWARD_ONLY:记录指针只能向前移动
ResultSet.TYPE_SCROLL_INSENSITIVE:记录指针自有移动,数据库数据变动不在ResultSet体现
ResultSet.TYPE_SCROLL_SENSITIVE:记录指针自有移动,数据库数据变动会影响到ResultSet的内容
ResultSet.CONCUR_READ_ONLY:只读的并发模式
ResultSet.CONCUR_UPDATABLE:可更新的并发模式
可更新的结果集需要:结果集数据来自一个表,必须包含主键
3.本文介绍的方法:
first、last、next、absolute、previous、beforeFirst、afterLast
isFirst、isLast、isClosed、isBeforeFirst、isAfterLast、updateRow
deleteRow、insertRow、updateRow、moveToInsertRow、moveToCurrentRow
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 */ 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(); } } }
相关文章连接:
声明:
1.原创文章,转载请标明并加本文连接。
2.文章反映个人愚见,如有异议欢迎讨论指正