当前位置: 技术问答>java相关
请教高手:有没有人见过这个异常,关于数据库访问。送分!
来源: 互联网 发布时间:2015-09-28
本文导语: java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt 这个异常是什么原因产生的,怎么处理? (我用了一个公共的连接cnn ,几个方法中用了多个 Statement stm = cnn.createStatement(); ResultSet rstt = ...
java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt
这个异常是什么原因产生的,怎么处理?
(我用了一个公共的连接cnn ,几个方法中用了多个
Statement stm = cnn.createStatement();
ResultSet rstt = stm.executeQuery(sqlStr);
)我想不会是这个造成的吧!
这个异常是什么原因产生的,怎么处理?
(我用了一个公共的连接cnn ,几个方法中用了多个
Statement stm = cnn.createStatement();
ResultSet rstt = stm.executeQuery(sqlStr);
)我想不会是这个造成的吧!
|
使用完后cnn或stm没有关闭……应该是多次对数据库从新连接即初始化cnn,但以前的cnn连接没有关闭,固会造成此种情况
解决方法是改善你的程序结构!
解决方法是改善你的程序结构!
|
每个连接connection所能绑定的statement数目是有限的。
|
一般不需要调整每个connection能够绑定的句柄数目,一般分配的默认句柄数已经足够了。
connection能够同时绑定的句柄数是有限的,请注意“同时”二字。如果你用完每个句柄后,就马上关闭,也不会产生你所述问题。况且目前我还在建议你每个事务完成后要把connection关闭,下一个事务建立新的connection。
connection能够同时绑定的句柄数是有限的,请注意“同时”二字。如果你用完每个句柄后,就马上关闭,也不会产生你所述问题。况且目前我还在建议你每个事务完成后要把connection关闭,下一个事务建立新的connection。
|
同意绿色咖啡的说法,是你的数据库连接没有关闭,或者是stmt没有关闭,另外注意rs也要使用后关闭,
|
好的数据库程序思想是:
一个事务用一个connection,事务完成后立即关闭连接。
一个操作用一个statement,操作完成后立即关闭句柄。
一个事务用一个connection,事务完成后立即关闭连接。
一个操作用一个statement,操作完成后立即关闭句柄。
|
你需要在一个事务使用数据库完毕后关闭连接
|
connection可以一直开着,你可以这样做,但我有几条不建议你一直开着的理由:
1、每个用户登录就开一个connection,直到用户注销才关闭,这样每个connection都会占一些系统资源(connection是比较占资源的),虽然速度会快一些,但不利于内存优化。
2、数据库的最大连接数是有限的,如果每个登录用户占一个connection,你做的软件允许同时登录的用户数量将受限于数据库配额。
1、每个用户登录就开一个connection,直到用户注销才关闭,这样每个connection都会占一些系统资源(connection是比较占资源的),虽然速度会快一些,但不利于内存优化。
2、数据库的最大连接数是有限的,如果每个登录用户占一个connection,你做的软件允许同时登录的用户数量将受限于数据库配额。
|
不能多个方法共有一个数据库连接,因为数据库连接是稀有资源,并且是即时的。
所以应该每个方法都创建连接,使用后关闭连接。
所以应该每个方法都创建连接,使用后关闭连接。