在使用Microsoft提供的JDBC可能很多人都遇到以下两个问题,今天一个朋友在使用的时候就遇到了,后来帮朋友把问题解决了,在解决问题的过程中我也查了些资料,在网上发现有一些朋友对这些问题不是很清楚,所以今天把这两个问题写下来,大家一起交流进步。
问题一:
出现异常:Can't start a cloned connection while in manual transaction mode.
原因:今天朋友遇上这个问题是因为使用了多个Statement,并且使用了手动事务状态。
解决方法:在数据库连接字符串中加入SelectMethod=Cursor即可,SelectMethod的默认模式为direct,代码:
jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test;SelectMethod=Cursor
问题二:
出现异常:com.microsoft.jdbc.sqlserver.SQLServerConnection.prepareStatement(Ljava/lang/String;I)Ljava/sql/PreparedStatement;
原因:使用了自动绑定主键,代码:
String sql = "INSERT INTO test values(?)";
PreparedStatement pstmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
pstmt.setString(1, "test");
pstmt.executeUpdate();
解决方法:这里我是使用了第三方JDBC包(jtds)解决的,下载地址:http://jtds.Sourceforge.net,下面贴出JDBC驱动及连接地址:
String driver="net.sourceforge.jtds.jdbc.Driver";
String url="jdbc:jtds:sqlserver://localhost:1433;DatabaseName=test";
关于第二个问题,如果有朋友知道如何在SQLServer2000的JDBC中解决,请给我留言,一起交流进步。
在这里推荐使用第三方JDBC(jtds)包,用这个包的话至少以上两个问题都不用担心。