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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jiangshangchunjiezi/article/details/88353481

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、prepareStatement最好放在循环的外边,而且使用了这些Statement后,需要及时关闭。最好是执行了一次executeQuery、executeUpdate()后,如果不需要使用结果集(ResultSet)的数据,就马上将Statement关闭。因为每次执行con.createStatement()或conn.prepareStatement(),实际上都相当于在数据库中打开了一个cursor,如果把对这两个方法的调用放在循环内,会一直不停的打开cursor。如果不能及时关闭,会导致程序抛出异常

猜你喜欢

转载自blog.csdn.net/jiangshangchunjiezi/article/details/88353481