Dao工具类能写成static方式吗?反复不定时出现"结果集关闭"或"空指针"问题的解决
2014-06-10 21:34
246 查看
环境:SQL Server 2000 ,Java7u55,TomCat
这几天在做Ajax过程中,发现了一个很严重的问题,
一个页面上,有三处get请求,在运行时经常随机出现各jdbc错误:
驱动中报异常:
1.空指针
2.结果集已关闭
3.socket closed
4....
5.很多种,想不起来了,
反正各种异常,问题是有一半的时间它是好用的,同一个页面有时又不好用了.最怕的就是这种现象啊,
解决过程:
1.由于SQL Server2000较老,怀疑是驱动问题,换了驱动,无果
2.怀疑连接打开太慢,加了c3p0连接池后,问题依旧
3.加入了各种调试语句,没有发现空指针的地方.
问题进入僵局.
看着自己写的Dao工具类,逻辑上没有发现不正确的地方,就是个简单的Jdbc调用过程.
但想到出现问题主要是在一个页面中有多次请求时,在一次请求的情况下并不出错,所以怀疑是并发方面的问题
突然想到自己为了偷懒,把工具类的执行方法写成了静态方法,把connection与ResultSet等数据库对象都写成了Static,
那么在快速的两次执行时,第二次在第一次没有结束时就开始执行,会不会是第二次与第一次干扰了呢,?
想到这里,我把Dao中数据库的cn和rs对象的Static去掉,把Dao类每次执行Sql语句时都New一下,问题解决
问题代码如下:
Dao工具类:cn,rs都是static的
修改后:Dao类中cn,rs不再是static,Dao工具类先new再用.
看来不能乱偷懒啊!
这几天在做Ajax过程中,发现了一个很严重的问题,
一个页面上,有三处get请求,在运行时经常随机出现各jdbc错误:
驱动中报异常:
1.空指针
2.结果集已关闭
3.socket closed
4....
5.很多种,想不起来了,
反正各种异常,问题是有一半的时间它是好用的,同一个页面有时又不好用了.最怕的就是这种现象啊,
解决过程:
1.由于SQL Server2000较老,怀疑是驱动问题,换了驱动,无果
2.怀疑连接打开太慢,加了c3p0连接池后,问题依旧
3.加入了各种调试语句,没有发现空指针的地方.
问题进入僵局.
看着自己写的Dao工具类,逻辑上没有发现不正确的地方,就是个简单的Jdbc调用过程.
但想到出现问题主要是在一个页面中有多次请求时,在一次请求的情况下并不出错,所以怀疑是并发方面的问题
突然想到自己为了偷懒,把工具类的执行方法写成了静态方法,把connection与ResultSet等数据库对象都写成了Static,
那么在快速的两次执行时,第二次在第一次没有结束时就开始执行,会不会是第二次与第一次干扰了呢,?
想到这里,我把Dao中数据库的cn和rs对象的Static去掉,把Dao类每次执行Sql语句时都New一下,问题解决
问题代码如下:
ResultSet rs=DaoDs.runSelect(sql, p); //...使用Rs工作 DaoDs.close();//关闭相关对象
Dao工具类:cn,rs都是static的
public static ResultSet runSelect(String sql,Object ... p) throws Exception { try { Class.forName(driver); cn = DriverManager.getConnection(url, user, password); ps = cn.prepareStatement(sql); int i = 1; if (p != null) for (Object t : p) { if (t == null) break; ps.setObject(i, t); i++; } rs = ps.executeQuery(); return rs; } catch (Exception e) { // e.printStackTrace(); throw e; // return null; } finally { } }
修改后:Dao类中cn,rs不再是static,Dao工具类先new再用.
DaoDs2 d=new DaoDs2(); ResultSet rs=d.runSelect(sql, p); //...使用Rs工作 d.close();
看来不能乱偷懒啊!
相关文章推荐
- 解决:浏览页面时,出现"WebDev.WebServer.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。"问题
- 解决:浏览页面时,出现"WebDev.WebServer.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。"问题
- 解决MONKEY-TEST 测试出现的Spinner弹出后关闭时出现的空指针问题
- IE8 "出现问题关闭"问题的解决
- 解决MONKEY-TEST 测试出现的Spinner弹出后关闭时出现的空指针问题
- 解决连接MySql4.0数据库出现的"character_set_results"问题
- 如何解决用"adobe pdf"打印Djvu文件出现横线或横条的问题
- SAP 报废资产时出现 "无法找到区域 01 的账户 '资产销售收入的结算科目' " 的解决(二) 解决问题
- "已有打开的与此命令相关联的DataReader,必须首先将它关闭"问题解决
- 解决IE经常出现“Microsoft Internet Explorer遇到问题需要关闭……”的信息提示
- "IE浏览器遇到问题需要关闭"的解决办法
- win7下,使用锐捷出现“未能找到网卡或系统还未完成网卡初始化操作"问题解决
- 打开页面时出现"Automation 服务器不能创建对象"问题的解决方法
- 自己遇到的"Microsoft Management Console遇到问题需要关闭,我们对此引起的不便表示抱歉……"问题的解决方法
- "Microsoft Office Word 遇到问题需要关闭"如何解决?
- 关闭winform窗体时,出现了bug,貌似微软VS.NET2005的问题,请教大家该如何解决
- .Net环境水晶报表在98下发布,出现"不能加载报表..."问题的解决
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- Adobe有些软件出现“遇到问题需要关闭”问题的解决办法
- 解决了Office2007"向程序发送命令时出现错误 "的问题