JDBC高级应用 - 处理结果集

处理结果集

查询结果都保持在ResultSet结果集中,遍历结果集便可以取得其中的数据。

查询多个结果集

实际应用中,一般会查询多个表格,查询多个表格可以使用同一个Statement或者PreparedStatement实现,返回同一个ResultSet对象
例如:

String sql = "select * from table1";
pStmt = conn.prepareStatement(sql);
rs = pStmt.executeQuery();
while(rs.next()){
    //遍历数据
}
//不用执行rs.close(),JDBC默认自动关闭前一次查询的RS
String sql = "select * from table2";
pStmt = conn.prepareStatement(sql);
rs = pStmt.executeQuery();
while(rs.next()){
    //遍历数据
}

可以滚动的结果集

除了常用的next()方法,ResultSet接口还有其它的方法,如previous(),first(),last()等,如果后面还有记录,next()会返回true,同时自动滚向下一条记录,否则返回false。previous()则相反。
为了效率,Statement默认返回的是RS是只向后滚动的,因此只有next,last方法可用,要使用previous,first等方法,可以按如下方法
创建Statement:

stmt =conn.createStatement(Result.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
rs = stmt.executeQuery("...");

其中第1个参数指定创建的ResultSet可以自由滚动,第2个参数指定Statement创建的ResultSet可以直接修改

Pagination分页显示

数据量大时需要分页显示,分页显示时只从数据库中取出本页要显示的记录,而不必把所有的记录都读取出来。MySQL中实现分页是利用LIMIT来实现的,如“select * from table1 limit 21,10”,只取出从第21行开始的10行记录。
分页时要先计算记录总数,然后再计算页面数,当计算好后,制作分页。
如果是sql server的话:
select top 10 * from table1 where id not in(select top (pageNum-1)*10 id)

Pagination分页显示-步骤

(1)取得传来的要显示的页面数
(2)定义分页变量

int pageNum = 1; //当前页面
int pageSize = 3; //每页的记录条数
int pageSum = 0; //总页面数

(3)计算总页面数

pageSum = iCount/pageSize;  
if(iCount%pageSize!=0)
{
        pageSum+=1;
}

(4)取得分页数据并显示

ResultSetMetaData元数据

ResultSet可以通过无数据在不知道列名的时候将列名取出来。
rs = pStmt.executeQuery();
ResultSetMetaData meta = rs.getMetaData();
int columnCount = meta.getColumnCount();
String[] columns = new String[columnCount];
System.out.println("各个列的列名如下:");
for(int i=1;i<columnCount;i++){
columns[i-1]=meta.getColumnName(i);
System.out.println(columns[i-1]);
}

直接显示中文列名

    Sql查询的时候可以声明别名:
    Select id 编号, uname 姓名, realname 真实姓名 from table1
    显示列名时的语句:
    columns[i-1]=meta.getColumnLabel(i);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北顾丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值