当前位置: 技术问答>java相关
rs.last()为什么会出错?(jsp,jrun,jdbc,oracle)
来源: 互联网 发布时间:2015-06-04
本文导语: 一张表.里面两条记录.查询如下 try{ ResultSet rs = stmt.executeQuery("select * from table"); rs.last(); String i = ors.getString("xzid"); out.print(i); }catch(SQLException e){ out.print("error"); } 打印 error...
一张表.里面两条记录.查询如下
try{
ResultSet rs = stmt.executeQuery("select * from table");
rs.last();
String i = ors.getString("xzid");
out.print(i);
}catch(SQLException e){
out.print("error");
}
打印 error
但是如果把rs.last()改成rs.next()就没有问题.郁闷死我了.
还有,怎么能把异常的stack打印出来?
try{
ResultSet rs = stmt.executeQuery("select * from table");
rs.last();
String i = ors.getString("xzid");
out.print(i);
}catch(SQLException e){
out.print("error");
}
打印 error
但是如果把rs.last()改成rs.next()就没有问题.郁闷死我了.
还有,怎么能把异常的stack打印出来?
|
按照下面这样就没有问题了
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
注意TYPE_SCROLL_SENSITIVE,使你的记录集可以前后滚动。
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
注意TYPE_SCROLL_SENSITIVE,使你的记录集可以前后滚动。
|
你显示数据用这个吧。
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
try{
...
}catch(Exception ex) {
ex.printStackTrace(System.err);
}
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
try{
...
}catch(Exception ex) {
ex.printStackTrace(System.err);
}
|
一般情况(!)下只需要使记录集向后滚动就可以了,并且用:
ResultSet rs = stmt.executeQuery(strYourSql); // stmt inited before!
while(rs.next()){
// do something with rs at current cursor
}
//////////
另外用:
System.out.println(e);可以打印出异常信息;
用e.printStackTrace();可以打印出异常出现前的调用栈的情况,便于定位问题。
ResultSet rs = stmt.executeQuery(strYourSql); // stmt inited before!
while(rs.next()){
// do something with rs at current cursor
}
//////////
另外用:
System.out.println(e);可以打印出异常信息;
用e.printStackTrace();可以打印出异常出现前的调用栈的情况,便于定位问题。