今天遇到个问题,系统运行时,抛出个错误,超过最大游标数。后来在网上查了一些资料,知道数据库的连接来讲,是有最大游标数限制的。所以就产生了一个疑问,jdbc和游标是什么关系呢?又通过找资料,发现网上没有多少有价值的东西,所以就开始自己思考,思考jdbc的处理过程。思考的结果如下:
1、首先获取连接
2、创建statement对象,用于向数据库发送待执行的sql。
3、调用startment对象的方法,比如:executeQuery,将sql语句发送到数据库,数据库接收到sql后,执行sql,此时需要打开一个游标,用于指向结果集,然后返回这个游标。
4、返回resultset,保存返回的结果集。resultset中包括三种不同类型的游标,如下:
ResultSet.TYPE_FORWARD_ONLY
ResultSet.TYPE_SCROLL_INSENSITIVE
ResultSet.TYPE_SCROLL_SENSITIVE
三个的具体含义和区别参照:http://xujunprogrammer.blog.hexun.com/31265955_d.html
这三种resultset通过游标访问结果集,所以每一个查询,数据库都会打开一个游标。如果没有及时关闭游标,就会导致超过最大游标数。