对于访问数据库,从数据库中读到结果集可能还达不到我们的要求,有时候,我们让让结果集能动起来。由于某些需求,我们对一些不相邻的结果集要进行查看,所以要实现结果集的可滚动是必要的,下面的程序实现的结果集的可滚动!
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestScroll {
public static void main(String[] args){
Connection conn = null;
Statement stmt = null;
try{
String sql = "select * from my_fen";
conn = ConnectionUtils.openConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery(sql);
//实现了滚动 可滚动的结果集
rs.first();
System.out.println(rs.getString("user_id"));
rs.next();
System.out.println(rs.getString("user_id"));
rs.last();
System.out.println(rs.getString("user_id"));
rs.absolute(99);
System.out.println(rs.getString("user_id"));
rs.relative(-10);
System.out.println(rs.getString("user_id"));
}catch(SQLException e){
e.printStackTrace();
}finally{
ConnectionUtils.closeConnection(conn);
ConnectionUtils.closeStatement(stmt);
}
}
}
这行代码是创建语句对象。对于要执行的SQL语句得到的结果集增加了一些功能。
ResultSet.TYPE_SCROLL_INSENSITIVE 这个参数说明了执行SQL语句得到的结果集是可以滚动的
ResultSet.CONCUR_READ_ONLY 这个参数说明了得到的结果集只能读,不能修改
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
执行上面的程序,得到的结果如下:
而数据库中的部分数据如下:
通过这三张图片的对比,从下边两张中看USER_ID可以得以看出结果集实现了滚动。