ResultSet rs = null;
String sql = "select * from A; select * from B";stmt.execute(sql);
rs = stmt.getResultSet();
//这是得到了默认的第一个结果集;
while(rs.next()){
...
}
//这样写得到第二个结果集,怎么不对?应该怎样写?
stmt.getMoreResults();
//stmt.getMoreResults(1); //这样写也不对;
rs = stmt.getResultSet();
while(rs.next()){
...
}
String sql = "select * from A; select * from B";stmt.execute(sql);
rs = stmt.getResultSet();
//这是得到了默认的第一个结果集;
while(rs.next()){
...
}
//这样写得到第二个结果集,怎么不对?应该怎样写?
stmt.getMoreResults();
//stmt.getMoreResults(1); //这样写也不对;
rs = stmt.getResultSet();
while(rs.next()){
...
}
解决方案 »
- javascript问题,求大神指导~~~!
- ajax处理session过期问题!
- xuecheng
- 在jsf的〈h:dataTable>中没有数据的表格就平了,怎么才能让下和有数据的一样能产生有边框的感觉
- 请问我要做个当鼠标双击文本框时就可弹出时间选择器,可选着年份和日期;也可手动输入时间。分不够可在加呀!谢谢!
- javaBean的一个简单例子的问题请高手指点。
- 求救啊,各位大哥,请问如何用java正则表达式从<IMG src="/images/1.gif"/>取得src的值
- tomcat 连接 ms sqlserver2000的问题
- 高分求购数据库问题
- 高分求助!!!请进!!!
- 高分求类似struts 自己写的框架**********(具体信息看内容)
- SSH项目中问题
while(rs.next()){
count = count+1;
if(count ==2) {
...
}
}
=======================================
rs.next()跳过第一个
while(rs.next()){
...
}
你可以用union连接两个结果集。
String sql1 = "select * from A";stmt.execute(sql1);
rs1 = stmt.getResultSet();
//这是得到了默认的第一个结果集;
while(rs1.next()){
...
}ResultSet rs2 = null;
String sql2 = "select * from B";stmt.execute(sql2);
rs2 = stmt.getResultSet();
//这是得到了默认的第一个结果集;
while(rs2.next()){
...
}
分開。
6楼的方法已用过;看文档用 execute() ; getMoreResults() 可以取得多个结果集;
想问一下如何用这个方法?
看文档用 execute() ; getMoreResults() 可以取得多个结果集;
就是不知怎么用?
resultSet = stmt.getResultSet();
while(resultSet.next()){
....
}
}
如果结果集用了ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY这种类型是不是就不能在SQL 语句里使用 LEFT JOIN 语句了?
如果使用了,在子表里没有数据的话,主表的内容就为空。
如果设置了结果集的类型,它提示"该语句没有游标名称,提取类型为 2"是怎么回事?这是执行一个存储过程时报错。执行一个返回多个结果集的查询语句时也报错,但不是这个提示。
while(hasRs || stat.getUpdateCount() >= 0) {
if(hasRs)
rs = stat.getResult();
hasRs = stat.getMoreResults();
}因为如果你有三个语句,分别是select、update、select的
那么stat.execute首先返回true,
然后调用getMoreResults问第二条语句是否有结果集,返回false,但是这个时候getUpdateCount()会返回非负整数
然后再调用getMoreResults问第三条语句是否有结果集,返回true
while(hasRs || stat.getUpdateCount() >= 0) {
if(hasRs) {
rs = stat.getResult();
//read from rs
}
hasRs = stat.getMoreResults();
}
其实这个才是完整的获取所有结果集的方法,只不过通常我们很少这样用(也不是所有数据库支持多个结果集)
如果设置了结果集的类型,它提示"该语句没有游标名称,提取类型为 2"是怎么回事?这是执行一个存储过程时报错。执行一个返回多个结果集的查询语句时也报错,但不是这个提示。
getMoreResults(0);getMoreResults(1)都不对?
Parameters:
current - one of the following Statement constants indicating what should happen to current ResultSet objects obtained using the method getResultSet: Statement.CLOSE_CURRENT_RESULT, Statement.KEEP_CURRENT_RESULT, or Statement.CLOSE_ALL_RESULTS
清楚说明了这个参数的作用啊!它表达的只是是否需要关闭之前已经获取的结果集而已。我那个while循环应该可以获取所有结果集啊,有问题吗?
只所以要用这个类型是因为可以用 isBeforeFirst() 方法来判断是否有记录;
只所以要用这个类型是因为可以用 isBeforeFirst() 方法来判断是否有记录;
if(hasResult) {
do {
rs.getString(1);
} while(rs.next());
} else {
//No Result
}