代码很简单啊!就是得到一个连接:代码1:Connection co = DriverManager.getConnection(url);
Statement st1 = co.createStatement();
Statement st2 = co.createStatement();这段代码不会抛出异常。代码2:Connection co = DriverManager.getConnection(url);
co.setAutoCommit(false);
Statement st1 = co.createStatement();
Statement st2 = co.createStatement();此代码抛出异常:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a
cloned connection while in manual transaction mode.“cloned connection ”新建一个克隆连接?难道说,当一个Connection建立两个Statement时,会建立一个新连接(克隆自身数据),然后用该连接产生第二个Statement?
当连接处于自动提交模式时,可以克隆连接。而当处于用户提交模式时,无法克隆连接,抛出异常。可是当我让处于自动提交模式的连接产生两个Statement,然后分别对它们调用getConnection(),发现产生两个Statement的Connection是相同的,也就是说,没有克隆。那麽,既然处于自动提交模式下的同一个连接可以产生两个Statement,为什麽处于用户提交模式时就无法产生两个Statement?两个会话的事务可以互不影响啊!而且异常中的cloned connection 是怎麽回事?
Statement st1 = co.createStatement();
Statement st2 = co.createStatement();这段代码不会抛出异常。代码2:Connection co = DriverManager.getConnection(url);
co.setAutoCommit(false);
Statement st1 = co.createStatement();
Statement st2 = co.createStatement();此代码抛出异常:java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Can't start a
cloned connection while in manual transaction mode.“cloned connection ”新建一个克隆连接?难道说,当一个Connection建立两个Statement时,会建立一个新连接(克隆自身数据),然后用该连接产生第二个Statement?
当连接处于自动提交模式时,可以克隆连接。而当处于用户提交模式时,无法克隆连接,抛出异常。可是当我让处于自动提交模式的连接产生两个Statement,然后分别对它们调用getConnection(),发现产生两个Statement的Connection是相同的,也就是说,没有克隆。那麽,既然处于自动提交模式下的同一个连接可以产生两个Statement,为什麽处于用户提交模式时就无法产生两个Statement?两个会话的事务可以互不影响啊!而且异常中的cloned connection 是怎麽回事?
解决方案 »
- 一个struts1的简单实例出现javax.servlet.jsp.JspException异常谁帮我看一下。。。
- tomcat访问问题
- jquery根据class来选取对应的<input>(共150分啊)
- 大家有人知道亦新金阳这个公司的不???
- 关于struts验证框架
- 【求助贴】用超链接实现下载,但.pptx .xlsx的文件不能下载
- 两句代码是什么意思
- 关于struts的checkbox的问题!
- JSP问题!
- 怎么把日期格式的STRING换成这种格式呢
- jsp连sql server 2k出错,三个主要文件也考到了jre/lib/ext下。环境变量也加了。
- jsp怎样连接sqlserver
public class MutilStatement
{
public static void main(String[] args)
{
try
{
Class.forName("org.gjt.mm.mysql.Driver");
}
catch(ClassNotFoundException e)
{
System.out.println("ClassNotFoundException ->"+e);
}
try
{
String url="jdbc:mysql://localhost:3306/simple?useUnicode=true&useUnicode=true&characterEncoding=GBK";
String uid = "root";
String pwd = "roger";
Connection con = DriverManager.getConnection(url,uid,pwd);
Statement stat=con.createStatement();
Statement state=con.createStatement();
System.out.println(true);
}
catch(SQLException e)
{
System.out.println(e);
}
}
}