getString()方法与getObject()方法有什么区别

JDBC提供了getString()、getInt()、getData()等方法从ResultSet中获取数据。

当查询结果集中的数据量较小时,不用考虑性能,使用这些方法完全能够满足需求,但是当查询结果集中的数据量非常大时,则会抛出异常:OrcelException为处理:ORA-01000:maximum open cursors exceedde(以Orcel数据库为例)。而通常情况下,使用getObject()方法就可以解决这个问题。

getString()或getInt()等方法在被调用时,程序会一次性地把数据都放到内存中,然后通过调用ResultSet的next()和getString()等方法来获取数据。

当数据量大到内存中放不下时就会抛出异常,而使用getObject()方法就不会出现这种问题,因为数据不会一次性被读到内存中,每次调用时会直接从数据库中去获取数据,因此使用这种方法不会因为数据量过大而出错。


使用JDBC需注意的问题:

在使用JDBC编程是,首先需要建立数据库的连接,才能完成对数据库的访问,由于与数据库的连接是非常重要的资源。JDBC连接池提供了JDBC连接定义和数目有限的连接,如果连接数量不够,就需要长时间等待。不正常关闭JDBC连接会导致等待回收无效的JDBC连接。只要正常的关闭和释放JDBC连接,JDBC资源才可以被快速地重用,从而使得系统性能得到改善。

一般来讲,在使用JDBC访问数据库是,createStatement和prepartStatement最好放在循环外面,而且使用了这些Statement后需要及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后,如果不需要使用结果集(ResultSet)的数据,就马上将Statement关闭。因为每次执行conn.createStatement()或conn.prepareStatement(),实际上都相当于在数据库中打开了一个cursor(游标),如果把对这两个方法调用放到循环内,会一直不停地打开cursor。如果不能及时地关闭,会导致出现抛出异常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值