`
pengfeng
  • 浏览: 232454 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

使用IBatis操作SQLServer数据库查询怪异异常

阅读更多

异常信息 :  java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.

 

分析 : 这个错误产生的原因一般是当你在一个SQL SERVER的JDBC连接上执行多个STATEMENTS的操作,或者是手动事务状态(AutoCommit=false) 并且使用 direct (SelectMethod=direct) 模式. Direct 模式是默认的模式.

 

解决办法 : 当你使用手动事务模式时,必须把SelectMethod 属性的值设置为 Cursor, 或者是确保在你的连接上只有一个STATEMENT操作。

 

解析:
如果你用MS的驱动时,如果你没有设置selectMethod=cursor(默认为direct),这时候,你同一个connection创建了两个statement,实际上第二个statement会隐式创建一个cloned connection,所以你在Enterprise manager里会看到多出的session

 

设置SelectMethod参数举例:

 

在连接SQLServer数据的URL中进行设置 :  jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=db;SelectMethod=Cursor

 

 

至于将SelectMethod设置程Direct和Cursor的区别,和设置程Cursor后可对那些参数设置进行进一步优化就靠大家自己取查资料了,这里就不在细叙了

分享到:
评论
Global site tag (gtag.js) - Google Analytics