[Microsoft][SQLServer JDBC Driver]System Exception: Connection reset.
ll_rj 2011-02-11 10:57:30 程序之前在公司电脑上跑的好好的,后来搬到自己的电脑,就老报
[Microsoft][SQLServer JDBC Driver]System Exception: Connection reset.
这个异常。
上网搜该问题,个人觉得大概应该是第一个connection还未关闭的情况下,又新去获取一个connection 的情形下,DriverManager.getConnection(url, user, password) 这句会报错。为了验证写了下面的代码,发现确实如此。
可是公司机器上一样的代码却没有报,十分不解?
可能是数据库不一样,公司用的企业版,自己装的是开发版。打了sp4补丁,没效果。
实在不行打算明天重装SQL Server看看,搞了一天了,郁闷死了~~~
请各位指点:究竟是否是数据库的原因呢?还是我的代码本身就有问题,只是在某些环境下没有暴露而已?
谢谢!
//JDBC连接工具类
public final class JdbcUtils {
private static String db_driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
private static String url = Setting.getDatabaseConn();
private static String user = Setting.getDatabaseUser();
private static String password = Setting.getDatabasePass();
private JdbcUtils() {
}
static {
try {
Class.forName(db_driver);
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Connection getConnection() throws SQLException {
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
}
//测试代码如下
Connection conn = null;
Statement st = null;
ResultSet rs = null;
// 1.建立连接
conn = JdbcUtils.getConnection();
//异常爆发点!!!!!!!!!!!!!!!!!!!!!
Connection conn2 = JdbcUtils.getConnection();
conn2.close();
// 2.创建语句
st = conn.createStatement();
// 3.执行语句
rs = st.executeQuery("select * from code_tbl");
// 4.处理结果
while (rs.next()) {
// 参数中的1,2,3,4是指sql中的列索引
System.out.println(rs.getObject(1) + "\t" + rs.getObject(2)
+ "\t" + rs.getObject(3) + "\t" + rs.getObject(4));
break;
}