?
package com.yli.demo; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * Statement测试[ResultSet可滚动可更新结果集]<br> * 可滚动:对ResultSet可向前向后定位<br> * 可更新:ResultSet数据修改后可提交至数据库 */ public class ScrollStatementTest { public static void main(String[] args) { Test1(); } /** * 测试可滚动,可更新的结果集ResultSet */ public static void Test1() { try { Connection conn; conn = ConnectionUtil.getConnection(); /** * * ResultSet.TYPE_FORWARD_ONLY [结果集不可滚动] * ResultSet.TYPE_SCROLL_INSENSITIVE [结果集可滚动,且不可感知查询出来的数据是否有变化] * ResultSet.TYPE_SCROLL_SENSITIVE [结果集可滚动,可感知查询出来的数据是否有变化] * * ResultSet.CONCUR_READ_ONLY[结果集只读] * ResultSet.CONCUR_UPDATABLE[结果集可更新至数据库] */ // 创建[可滚动对数据更新不敏感]+[结果集可更新至数据库]的Statement Statement statement = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); String sql = "select afficheid,affichetitle from ES_T_SHOP_AFFICHE"; ResultSet rs = statement.executeQuery(sql); // 检查是否可支持是否支持滚动与更新 DatabaseMetaData meta = conn.getMetaData(); boolean isSupport = meta.supportsResultSetType(ResultSet.TYPE_SCROLL_SENSITIVE); System.out.println("===========>isSupport=" + isSupport); long id; String title; int currentRow; boolean isAvailable; /** * 像使用数组一样使用结果集ResultSet * absolute(rowId) 定位到第几行 * previous() 前一行数据 * next() 后一行数据 * getRow() 返回行号,如果返回0表示不可用:即在第一行之前或者最后一行之后 * * 如果当前一行已经在第一行,再回到前一行则返回false * 如果当前一行已经在最后一行,再回到后一行则返回false */ // 定位到第1行数据[从1开始计算] isAvailable = rs.absolute(1); // 同时返回值表示该行是否可用 id = rs.getLong("afficheid"); title = rs.getString("affichetitle"); currentRow = rs.getRow(); System.out.println("============>更新之前"); System.out.println("============>是否可用:" + isAvailable); System.out.println("============>当前行号:" + currentRow); System.out.println("============>id:" + id); System.out.println("============>title:" + title); System.out.println(); // 更改第一行数据[可更新] rs.updateString("affichetitle", "IT-EYE"); // ResultSet数据集已更新 rs.updateLong("afficheid", id); // ResultSet数据集已更新 rs.updateRow(); // ResultSet更新提交至数据库 id = rs.getLong("afficheid"); title = rs.getString("affichetitle"); currentRow = rs.getRow(); System.out.println("============>更新之后"); System.out.println("============>是否可用:" + isAvailable); System.out.println("============>当前行号:" + currentRow); System.out.println("============>id:" + id); System.out.println("============>title:" + title); System.out.println(); // 定位到第5行数据 isAvailable = rs.absolute(5); // 同时返回值表示该行是否可用 id = rs.getLong("afficheid"); title = rs.getString("affichetitle"); currentRow = rs.getRow(); System.out.println("============>是否可用:" + isAvailable); System.out.println("============>当前行号:" + currentRow); System.out.println("============>id:" + id); System.out.println("============&