PRB:在手工事务模式下无法启动克隆的连接[注意]

症状

<script type="text/javascript">loadTOCNode(1, 'symptoms');</script>
使用 Microsoft SQL Server 2000 JDBC 驱动程序时,您可能会遇到以下异常:
java.sql.SQLException:[Microsoft][SQLServer 2000 Driver for JDBC]Can't start a cloned connection while in manual transaction mode.

原因

<script type="text/javascript">loadTOCNode(1, 'cause');</script>
在手工事务模式 (AutoCommit=false) 下,如果使用直接 (SelectMethod=direct) 模式,当您尝试对使用 JDBC 驱动程序的 SQL Server 数据库执行多个语句时,将会出现此问题。直接模式是该驱动程序的默认模式。

解决方案

<script type="text/javascript">loadTOCNode(1, 'resolution');</script>
当您使用手工事务模式时,必须将驱动程序的 SelectMethod 属性设置为 Cursor,或者确保您按照本文“更多信息”一节指定的方式在每个连接上只使用一个活动语句。

状态

<script type="text/javascript">loadTOCNode(1, 'status');</script>
这种现象是设计导致的。

更多信息

<script type="text/javascript">loadTOCNode(1, 'moreinformation');</script>

重现此问题的步骤

<script type="text/javascript">loadTOCNode(2, 'moreinformation');</script> 使用以下代码重现此错误:

注意:请参见代码中的注释,以获取解决此问题所需的代码更改信息。
import java.sql.*;
import java.io.*;


public class Repro{

	public static void main(String args[])
	{
		try {
			Connection con;
			Statement s1 = null;
			ResultSet r1 = null;
			Statement s2 = null;
			ResultSet r2 = null;
			Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
			con = DriverManager.getConnection(
				"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Direct;User=User;Password=Password");
			//fix 1
				//"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs;SelectMethod=Cursor;User=User;Password=Password");
			con.setAutoCommit(false);
			
			try {
				s1 = con.createStatement();
				r1 = s1.executeQuery("SELECT * FROM authors");
				
				//fix 2
				//r1.close();
				//s1.close();

				s2 = con.createStatement();
				r2 = s2.executeQuery("SELECT * FROM publishers");
			}
			catch (SQLException ex)
			{
				System.out.println(ex);				
			}
		
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
	}
}
				

参考

<script type="text/javascript">loadTOCNode(1, 'references');</script>
有关克隆连接的更多信息,请参见 Microsoft SQL Server 2000 JDBC 驱动程序 HTML 帮助中的“连接字符串属性”部分或参见联机指南。有关使用该驱动程序的克隆连接的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
313220 (http://support.microsoft.com/kb/313220/) PRB:到 SQL Server JDBC 的意外连接
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值