使用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后可对那些参数设置进行进一步优化就靠大家自己取查资料了,这里就不在细叙了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值