- 在前面已经有接触过封装查询结果集的类ResultSet了,可以通过next()方法移动指针来访问结果集。
- ResultSet还有其他方法可以灵活地移动记录指针,可以使用以下这些方法的ResultSet称为可滚动的结果集,在java5之后,默认打开的ResultSet是可滚动的。
- absolute(int row)移动到指定的行。
- previous()移动到上一行
- afterLast()移动到最后一行之后,它的previous()就是最后一行
- 默认打开的ReusltSet是不可以更新查询结果的,如果需要使得结果集有更新查询结果的功能,则需要在创建Statement或者PreparedStatement的时候额外传入参数。
- 具体的讲解穿插在代码中。
- 在运行程序之前,表的内容是这样的
+------+-------+------+------+------+ | Sno | Sname | Ssex | Sage | Dno | +------+-------+------+------+------+ | Sno1 | Smith | m | 21 | D01 | | Sno2 | Marry | f | 21 | D01 | | Sno3 | Tom | m | 21 | D01 | +------+-------+------+------+------+
运行程序之后,它是这样的
+-----+-------+------+------+------+ | Sno | Sname | Ssex | Sage | Dno | +-----+-------+------+------+------+ | S1 | Smith | m | 21 | D01 | | S2 | Marry | f | 21 | D01 | | S3 | Tom | m | 21 | D01 | +-----+-------+------+------+------+
import java.io.FileInputStream; import java.sql.*; import java.util.Properties; public class ResultSetTest { // 常规操作,不解释 private String driver; private String url; private String user; private String pass; public void initParam(String paramFile) throws Exception{ Properties properties = new Properties(); properties.load(new FileInputStream(paramFile)); driver = properties.getProperty("driver"); url = properties.getProperty("url"); user = properties.getProperty("user"); pass = properties.getProperty("pass"); } public void query(String sql)throws Exception{ Class.forName(driver); try( Connection connection = DriverManager.getConnection(url, user, pass); PreparedStatement preparedStatement = connection.prepareStatement( sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); // 当需要结果集可更新表的内容的时候,就需要在这里传入相应的参数 // ResultSet.TYPE_SCROLL_INSENSITIVE:指针可以自由移动 // ResultSet.CONCUR_UPDATABLE:可以更新表的内容 ResultSet rs = preparedStatement.executeQuery()) { rs.last(); // 将指针移动到最后一行 int rowCount = rs.getRow(); // 得到行数 for(int i=rowCount; i>0; i--){ // 将指针在最后一行往前挪 rs.absolute(i); // 将指针在最后一行往前挪 System.out.println(rs.getString(1) + "\t" + rs.getString(2) + "\t" + rs.getString(3) + "\t" + rs.getInt(4) + "\t" + rs.getString(5)); // 打印出对应列的信息 rs.updateString(1, "S" + i); // 更新第几列 rs.updateRow(); // 执行更新 } } } public static void main(String args[]) throws Exception{ ResultSetTest rt = new ResultSetTest(); rt.initParam("mysql.ini"); rt.query("select * from students;"); } } //运行程序,看到以下输出 // S3 Tom m 21 D01 // S2 Marry f 21 D01 // S1 Smith m 21 D01
- 在运行程序之前,表的内容是这样的
java数据库编程(7) 管理结果集
猜你喜欢
转载自blog.csdn.net/weixin_39452731/article/details/83036153
今日推荐
周排行