搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
办公|编程助手
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
技术学习(版主发帖区)
›
编程语言
›
Java语言
›
原理型
›
ResultSet嵌套sql查询没获取到想要的数据
0
0
0
分享
ResultSet嵌套sql查询没获取到想要的数据
孤独的战神
2019-9-23 16:06:52
发表于
原理型
[显示全部楼层]
阅读模式
关闭右栏
0
2703
Statement st = conn.createStatement();
String sql="sql语句1" //sql语句1
ResultSet rst=
st
.executeQuery(sql);
while(rst.next()){
qsql="sql语句1中的查询结果作为sql语句2的查询条件" //sql语句2
ResultSet qrst=
st
.executeQuery(qsql);
if(qrst.next()){
//如果有数据获得数据
}
}
......
close()
预期应该是while循环会找出所有的结果,但是while只执行了一次就结束了循环。
通过查看Statement 的API,上面特别注明了一句话:
在默认情况下,同一时间每个 Statement 对象在只能打开一个 ResultSet 对象。因此,如果读取一个 ResultSet 对象与读取另一个交叉,则这两个对象必须是由不同的 Statement 对象生成的。如果存在某个语句的打开的当前 ResultSet 对象,则 Statement 接口中的所有执行方法都会隐式关闭它。
其实从Statement的原理来说,底层他还是从过游标的方式操作数据,尤其是进行查询的时候,并且还是显式游标,如果对其不能进行及时的资源释放,当运行到一定时间,数据库则会抛出异常给应用(打开的游标超过了最大值)。
现在原因已经定位到:
解决办法1:(每次查询定义 Statement )
Statement st = conn.createStatement();
String sql="sql语句1" //sql语句1
ResultSet rst=
st
.executeQuery(sql);
while(rst.next()){
qsql="sql语句1中的查询结果作为sql语句2的查询条件" //sql语句2
Statement
st1
= conn.createStatement();
ResultSet qrst=
st1
.executeQuery(qsql);
if(qrst.next()){
//如果有数据获得数据
}
}
......
close()
解决办法2:(遍历出查询的结果)
Statement st = conn.createStatement();
String sql="sql语句1" //sql语句1
List l_sql = new ArrayList<>();
ResultSet rst=
st
.executeQuery(sql);
while(rst.next()){
l_sql.add(rst.next())
}
for(String s_sql:l_sql){
qsql="sql语句1中的查询结果作为sql语句2的查询条件" //sql语句2
Statement
st1
= conn.createStatement();
ResultSet qrst=
st1
.executeQuery(qsql);
if(qrst.next()){
//如果有数据获得数据
}
}
......
close()
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
孤独的战神
高级会员
关注
7
主题
56
帖子
13
粉丝
远方有我牵挂的人--欣欣
TA的主题
一张图带你看懂maven生命周期以及执行原理
2020-7-12
HBase的数据模型是什么样的?
2020-6-30
activeMQ(1):理解和掌握JMS(-)
2020-4-27
activeMQ(1):activeMQ简介与安装使用
2020-4-16
hadoop 源码剖析之namenode启动
2019-11-30
24小时热文
kafka面试题精选
Nebula Flink Connector 在实时 ETL 的实践
Apache Doris 用户案例集
国家电网公司主数据管理系统技术规范
企业的主数据建设方法论与实践
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈