程序之前在公司电脑上跑的好好的,后来搬到自己的电脑,就老报
[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;
}
[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;
}
解决方案 »
- 如何查询数据库中某些字段相同的信息
- 连续ID
- 请教一个identity的问题
- SQl Server 怎么用存储过程返回记录集
- 在winxp sp2上安装 sql server 2000,会首先安装 版本为 2.5 的mdac组件,可是winxp自带的mdac版本就2.81呀,会不会覆盖呢?如果不覆盖,那么装好后机器上的mdac版本是什么呢?
- 这样的触发器怎么写?请教高手
- 保存40M数据时出错,请教大数据保存方法
- SQL安装之后注册表找不到登陆模式,是否安装错误?
- ~~~~能否修改数据库用户的sid号?
- 回答的根本就不对,如何能够结贴呢?
- 新手求助,VS2010装的那个SQL 2008是啥子东东
- 有个SQL不会写,,,,
Connection conn2 = JdbcUtils.getConnection();
conn2.close();
没打开就关闭了???
主要头一句 Connection conn2 = JdbcUtils.getConnection(); 这句已经抛出了异常....:(
conn = JdbcUtils.getConnection();//异常爆发点!!!!!!!!!!!!!!!!!!!!!
Connection conn2 = JdbcUtils.getConnection();
conn2.close();为什么不用CONN呢,就算你CONN2其实和CONN是一样的吧
....
conn = JdbcUtil.getConnection();
....
String countryName = rs.getString(1);
....
//然后代码又要调用另一个DAO,希望把英文的 countryName 转成中文的.
String countryNameCh = CodeDao.getCodeValue(countryName);
....而CodeDao.getCodeValue(String key)方法中:
自然又有
....
conn = JdbcUtil.getConnection(); //这里再次获取连接就报异常了。
....
Connection conn = DriverManager.getConnection(url, user, password);
return conn;
}
按这段代码,我理解上面代码中两次的conn应该是两个不同的连接对象。自己的疑惑是:
不明确 DriverManager.getConnection 获得的第一个Connection对象 conn 没有关闭的情况下
是否可以 DriverManager.getConnection 获得另一个Connection对象 conn2 ?盼请继续执教。
”翻译“需要连接数据库,不是同一个连接,原来的连接没有关闭。其实就是对前一个连接查出的 resultset 集边遍历,边翻译。故原来的连接没有关闭。
Connection conn--全局变量
public static Connection getConnection() throws SQLException {
if(conn != null)
retrun conn;
else
{
conn= DriverManager.getConnection(url, user, password);
return conn;
}
}
这样试试。
问题现在解决了。原来之前数据库安装后有点问题,1433端口没起来。我的连接串后来就去连了1434端口。
开始看着好像没什么问题。能连接上去。没想惹出现在这个问题。刚才把1433端口起来,并连接1433端口,之后问题就不存在了为自己汗那另外,这样应当说明 DriverManager.getConnection 获得的是两个连接。求认定。