我正在尝试使用JDBC(如SQL中的存储过程)在Java中实现任务.在SQL中,当我们编写游标时,首先执行select查询然后获取我们执行某些操作的记录.
可能我在Hive中解雇了一个select查询.
sql="SELECT a,c,b FROM tbl_name";
res=stmt.executeQuery(); -----------> CONTAINS 30 RECORDS
while(res.next())
{
sql="INSERT INTO table .....";
rs1=stmt.executeQuery();
sql="SELECT d,e,f FROM table .....";
rs1=stmt.executeQuery();
like wise many queries are there.....
.
.
.
..
}
Run Code Online (Sandbox Code Playgroud)
由于我的选择查询包含30条记录,但当我执行它时,我(while.inxt())只执行一次.
但是我只是尝试显示字段以检查它是否正在获取,而不是查询,然后它正常工作..(while循环只包含System.out.println语句)
sql="SELECT * FROM tbl_name";
res=stmt.executeQuery(sql);
while(res.next())
{
S.O.P.("fields : "+res.getString(0));
}
Run Code Online (Sandbox Code Playgroud)
(我认为当结果集被遍历时,如果查询之间存在,那么查询将被执行但同时循环也会执行,并且在查询执行结束后的一段时间之后,reslutset的循环也会完成并且因此它会执行一次.我不确定.)
为什么会这样,我没有得到.我做错了什么?
Cam*_*ner 11
每个Statement只能一次打开ResultSet一个.从文档:
默认情况下,每个Statement对象只能同时打开一个ResultSet对象.因此,如果读取一个ResultSet对象与另一个ResultSet对象的读取交错,则每个ResultSet对象必须由不同的Statement对象生成.如果存在打开的对象,则Statement接口中的所有执行方法都会隐式关闭该语句的当前ResultSet对象.
对executeQuery循环内部的调用将隐式关闭外部ResultSet,这就是为什么你只看到一行.
| 归档时间: |
|
| 查看次数: |
8117 次 |
| 最近记录: |