jdbc获取结果集oracle,JDBC中,怎么快速的获取结果集结构

本文探讨了在JDBC中如何快速获取SQL查询后结果集的结构,尤其是在面对大量数据时避免页面假死的问题。通过添加永假式(如`WHERE 1=2`)来确保查询不会返回实际数据,从而提高了效率。最终解决方案是使用子查询结构,例如`SELECT * FROM (SQL) TEST_SQL_TEMP WHERE 1=2`,这种方法在Oracle数据库中能够有效减少SELECT STATEMENT部分的耗时。
摘要由CSDN通过智能技术生成

JDBC中,如何快速的获取结果集结构?

问题描述:

对于给定的SQL语句(SELECT),以及数据库信息(url,用户名,密码),如何快速获取SQL语句执行后返回的结果集的结构?比如包含的字段个数,包含的字段名称以及Java类型

小试牛刀:

第一眼看上去,问题确实很简单。任何对JDBC有一定了解的人,都会很容易给出下面的方案:

1、根据数据库信息,创建数据库Connection;

2、利用Connection和SQL语句,创建一个PreparedStatement;

3、执行PreparedStatement,获取结果集ResultSet;

4、通过ResultSet获取ResultSetMetaData,所有的信息都在ResultSetMetaData中。

代码很快写好了,测试一下吧,select * from table,ok没问题。

问题出现了:

代码顺利提交,正寻思休息一下,测试姐姐满头大汗的过来了:

帮我看看,我的页面怎么死住了?

怎么可能?我测试可是没问题的啊。是不是你的SQL写的不对啊。

没有啊,我写的也是select * from table。

经过一番查找,终于发现问题了:

我的table里,只有100条数据,测试姐姐的表,居然有5,000,000条数据,select *一次,居然一分钟,IE长时间等不到返回,直接就死住了。

问题的症结:

其实上面的方案还是正确的,问题主要是查询出来的数据太多,导致数据库长时间不返回,页面就死掉了。

如果有一种方案,能保证查询出来的数据很少,最好是一条记录都没有,就好了。反正我要的是结果集的结构,不关心有没有数据。

将SQL修改成:select * from table where 1=2,用测试姐姐的数据表试试,页面马上就出来了,看来这招可行。

再次尝试:

经过上面的尝试,初步确定了第二个方案:对于用户给定的SQL,拼接上一个永假式,再执行拼接后的SQL。因

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值