ResultSet rs1 = dbStatement.executeQuery(strSQL);
后,如果再使用
ResultSet rs2 = dbStatement.executeQuery(strSQL);
那么rs1的结果会被冲掉是嘛?具体表现就是rs2.close()执行后,rs1也不能用了。
这样如果要同时使用两个结果集必须建立两个连接,是嘛?
16 个解决方案
#1
应该不能,rs1可能取不出数据。老早之前遇到了这么一个bug,调试了很久呢
#2
你可以在建立第二个结果集之前先把第一个的数据读出来,因为已经读出的数据是静态的,不会随时间而改变。
#3
to shos:
不行的,我的是异步过程,两个结果集根本没法断定谁先谁后。
我建立两个连接一点问题也没有了。
不过很郁闷。难道Java只能这样?
我想在一个类里共享一个连接,不必每次使用的时候都要去建立连接。建立连接难道不花费时间资源嘛?!
但是这种要求JDBC都不能满足?别的语言就可以。是不是Connection可以共享,Statement不能共享?没试过。谁提供一点经验?
不行的,我的是异步过程,两个结果集根本没法断定谁先谁后。
我建立两个连接一点问题也没有了。
不过很郁闷。难道Java只能这样?
我想在一个类里共享一个连接,不必每次使用的时候都要去建立连接。建立连接难道不花费时间资源嘛?!
但是这种要求JDBC都不能满足?别的语言就可以。是不是Connection可以共享,Statement不能共享?没试过。谁提供一点经验?
#4
一般情况下,这中情况最好建立两个Statement来实现你不同的操作,可能在有些时候这问题
没有显现出来,但是这种情况下一定会出问题:
ResultSet rs1 = dbStatement.executeQuery(strSQL);
while(rs1.next())
{
ResultSet rs2 = dbStatement.executeQuery(strSQL);
}
就会出现问题那!所以建议在做不同的操作时候还是有区分的好!
没有显现出来,但是这种情况下一定会出问题:
ResultSet rs1 = dbStatement.executeQuery(strSQL);
while(rs1.next())
{
ResultSet rs2 = dbStatement.executeQuery(strSQL);
}
就会出现问题那!所以建议在做不同的操作时候还是有区分的好!
#5
一个Statement只能给一个ResultSet提供数据,这是java的规矩
#6
Statement并不是连接, 类似于Query.
1个Connect中可以有多个Statement.
Statement关闭后,结果集自然就没有了.
1个Connect中可以有多个Statement.
Statement关闭后,结果集自然就没有了.
#7
Statement开辟对数据库的一个访问区,而ResultSet封装了数据库的游标,对Statement进行访问。所以,ResultSet和Statement是对应的,一个Statement不能对应两个ResultSet。
Statment表示的不是连接,Connection才是,这也是为什么事务管理是由Connection来负责的
Statment表示的不是连接,Connection才是,这也是为什么事务管理是由Connection来负责的
#8
楼上的理论是正确的
#9
长见识!
#10
一个Statement只能给一个ResultSet提供数据
这中情况最好建立两个Statement来实现你不同的操作
我有碰到过这种情况,用了三个dbStatement
最好区分开,不然肯定会出问题
这中情况最好建立两个Statement来实现你不同的操作
我有碰到过这种情况,用了三个dbStatement
最好区分开,不然肯定会出问题
#11
使用两个bean来存这两个结果集的数据
#12
先处理第一个rs,然后在执行ResultSet rs2 = dbStatement.executeQuery(strSQL);在处理第二个rs
#13
只能使用两个statement才可以,statement和resultset是一一对应的
#14
最好一次只使用一个statement,
两个或两个以上速度很慢的。
你为什么要两个ResultSet,
你可以先取出一个结果放在数组里来尽量满足你的要求啊,
或者用sql语句。
两个或两个以上速度很慢的。
你为什么要两个ResultSet,
你可以先取出一个结果放在数组里来尽量满足你的要求啊,
或者用sql语句。
#15
这是生命周期的问题,用一个RESULTSET后,自动消亡!
#16
失败
#1
应该不能,rs1可能取不出数据。老早之前遇到了这么一个bug,调试了很久呢
#2
你可以在建立第二个结果集之前先把第一个的数据读出来,因为已经读出的数据是静态的,不会随时间而改变。
#3
to shos:
不行的,我的是异步过程,两个结果集根本没法断定谁先谁后。
我建立两个连接一点问题也没有了。
不过很郁闷。难道Java只能这样?
我想在一个类里共享一个连接,不必每次使用的时候都要去建立连接。建立连接难道不花费时间资源嘛?!
但是这种要求JDBC都不能满足?别的语言就可以。是不是Connection可以共享,Statement不能共享?没试过。谁提供一点经验?
不行的,我的是异步过程,两个结果集根本没法断定谁先谁后。
我建立两个连接一点问题也没有了。
不过很郁闷。难道Java只能这样?
我想在一个类里共享一个连接,不必每次使用的时候都要去建立连接。建立连接难道不花费时间资源嘛?!
但是这种要求JDBC都不能满足?别的语言就可以。是不是Connection可以共享,Statement不能共享?没试过。谁提供一点经验?
#4
一般情况下,这中情况最好建立两个Statement来实现你不同的操作,可能在有些时候这问题
没有显现出来,但是这种情况下一定会出问题:
ResultSet rs1 = dbStatement.executeQuery(strSQL);
while(rs1.next())
{
ResultSet rs2 = dbStatement.executeQuery(strSQL);
}
就会出现问题那!所以建议在做不同的操作时候还是有区分的好!
没有显现出来,但是这种情况下一定会出问题:
ResultSet rs1 = dbStatement.executeQuery(strSQL);
while(rs1.next())
{
ResultSet rs2 = dbStatement.executeQuery(strSQL);
}
就会出现问题那!所以建议在做不同的操作时候还是有区分的好!
#5
一个Statement只能给一个ResultSet提供数据,这是java的规矩
#6
Statement并不是连接, 类似于Query.
1个Connect中可以有多个Statement.
Statement关闭后,结果集自然就没有了.
1个Connect中可以有多个Statement.
Statement关闭后,结果集自然就没有了.
#7
Statement开辟对数据库的一个访问区,而ResultSet封装了数据库的游标,对Statement进行访问。所以,ResultSet和Statement是对应的,一个Statement不能对应两个ResultSet。
Statment表示的不是连接,Connection才是,这也是为什么事务管理是由Connection来负责的
Statment表示的不是连接,Connection才是,这也是为什么事务管理是由Connection来负责的
#8
楼上的理论是正确的
#9
长见识!
#10
一个Statement只能给一个ResultSet提供数据
这中情况最好建立两个Statement来实现你不同的操作
我有碰到过这种情况,用了三个dbStatement
最好区分开,不然肯定会出问题
这中情况最好建立两个Statement来实现你不同的操作
我有碰到过这种情况,用了三个dbStatement
最好区分开,不然肯定会出问题
#11
使用两个bean来存这两个结果集的数据
#12
先处理第一个rs,然后在执行ResultSet rs2 = dbStatement.executeQuery(strSQL);在处理第二个rs
#13
只能使用两个statement才可以,statement和resultset是一一对应的
#14
最好一次只使用一个statement,
两个或两个以上速度很慢的。
你为什么要两个ResultSet,
你可以先取出一个结果放在数组里来尽量满足你的要求啊,
或者用sql语句。
两个或两个以上速度很慢的。
你为什么要两个ResultSet,
你可以先取出一个结果放在数组里来尽量满足你的要求啊,
或者用sql语句。
#15
这是生命周期的问题,用一个RESULTSET后,自动消亡!
#16
失败