Sql Server2000 Can't start a cloned connection while in manual transaction mode

本文介绍在SQLServer2000中使用JDBC时遇到的Can'tstartaclonedconnectionwhileinmanualtransactionmode错误,并提供了解决方案。主要问题在于手动事务模式(AutoCommit=false)与默认的直接选择模式(SelectMethod=direct)冲突,解决方法是在JDBCURL中设置SelectMethod=Cursor。
摘要由CSDN通过智能技术生成

Sql Server2000设置事务时

conn.setAutoCommit(false);

//执行语句sql1,sql2

conn.commit();

结果出现Can't start a cloned connection while in manual transaction mode错误,从网上找到原因及解决办法如下:

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

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

修改JDBC URL,加入SelectMethod=cursor即可:
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Cursor;User=User;Password=Password

微软提供详细原因如下:
SYMPTOMSWhile using the Microsoft SQL Server 2000 Driver for JDBC, you may experience the following exception:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode. 500)this.width=500" border="0"> CAUSEThis error occurs when you try to execute multiple statements against a SQL Server database with the JDBC driver while in manual transaction mode (AutoCommit=false) and while using the direct (SelectMethod=direct) mode. Direct mode is the default mode for the driver. 500)this.width=500" border="0"> RESOLUTIONWhen you use manual transaction mode, you must set the SelectMethod property of the driver to Cursor, or make sure that you use only one active statement on each connection as specified in the "More Information" section of this article. STATUSThis behavior is by design. MORE INFORMATIONSteps to Reproduce the BehaviorUse the following code to reproduce the error:

NOTE: See the comments in the code for information on the code changes that are required to resolve the problem.import java.sql.*;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值