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.*;