JDBC 可滚动结果集

来源:互联网 发布:淘宝直通车出价技巧 编辑:程序博客网 时间:2024/06/11 12:33

JDBC提供了可滚动结果集,可以向前滚,也可以向后滚。下面是几个API

Statement st = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//可回滚参数ResultSet rs = st.executeQuery(sql);rs.beforeFirst();//移到ResultSet最前面rs.afterLast();//移到ResultSet最后面rs.first();//获取第一跳记录rs.isFirst();//是否是第一跳记录rs.last();//获取最后一条记录rs.isLast();rs.absolute(9);//跳到第9条记录rs.moveToInsertRow();rs.next();//移到下一行rs.previous();//移到上一行

可更新结果集

conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs.updateString("col name", "new value");rs.updateRow();

可回滚结果集,可以用来分页,但是这种方法有个很大的缺点,必须将这些记录都读到内存中。对于有些数据库不支持分页的,可以使用此方法来进行分页。
//demo

package cn.itcast.jdbc;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class ScrollTest {/** * @param args * @throws SQLException */public static void main(String[] args) throws SQLException {scroll();}static void scroll() throws SQLException {Connection conn = null;Statement st = null;ResultSet rs = null;try {// 2.建立连接conn = JdbcUtils.getConnection();st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);rs = st.executeQuery("select id, name, money, birthday  from user limit 150, 10");while (rs.next()) {System.out.println(rs.getObject("id") + "\t"+ rs.getObject("name") + "\t"+ rs.getObject("birthday") + "\t"+ rs.getObject("money"));}System.out.println("------------");rs.absolute(150); //跳到第150条记录,并取出连续10条int i = 0;while (rs.next() && i < 10) {i++;System.out.println(rs.getObject("id") + "\t"+ rs.getObject("name") + "\t"+ rs.getObject("birthday") + "\t"+ rs.getObject("money"));}// if (rs.previous())// System.out.println(rs.getObject("id") + "\t"// + rs.getObject("name") + "\t"// + rs.getObject("birthday") + "\t"// + rs.getObject("money"));} finally {JdbcUtils.free(rs, st, conn);}}}

	
				
		
原创粉丝点击