在执行数据操作语句的时候,我不想每个方法里都写上很长的try{}cache(){},而且怕忘掉关闭数据库连接。
所以我就写了这样一个类。public static ResultSet excuteQuery(String sql){ Connection conn= //取得connection
ResultSet rs=null;
try{
Statment stmt=conn.createStatment();
rs=stmt.excuteQuery(sql);
stmt.close(); //注意这一行
}catch(Excepiton e){ }finally{
conn.close();
}
return rs;
}//测试程序
pulbic void test(){
ResultSet rs=excuteQuery("select * from user ");
while(rs.next()){
System.out.println(rs.getString(1));
}}
在调试的时候我发现一个很怪的问题。
如果我的excuteQuery中加入了 stmt.close(); test()里取得的RS就是空的
如果去掉stmt.close(); test()里就可以正确的打印出结果。
请问一下这是为什么? 如果我把不要stmt.close(); 会不会导致服务器的内存溢出阿???
所以我就写了这样一个类。public static ResultSet excuteQuery(String sql){ Connection conn= //取得connection
ResultSet rs=null;
try{
Statment stmt=conn.createStatment();
rs=stmt.excuteQuery(sql);
stmt.close(); //注意这一行
}catch(Excepiton e){ }finally{
conn.close();
}
return rs;
}//测试程序
pulbic void test(){
ResultSet rs=excuteQuery("select * from user ");
while(rs.next()){
System.out.println(rs.getString(1));
}}
在调试的时候我发现一个很怪的问题。
如果我的excuteQuery中加入了 stmt.close(); test()里取得的RS就是空的
如果去掉stmt.close(); test()里就可以正确的打印出结果。
请问一下这是为什么? 如果我把不要stmt.close(); 会不会导致服务器的内存溢出阿???
解决方案 »
- 关于java.lang.String的equals和hashCode方法的问题
- 第一个java程序
- JAVA数据库异常原因
- 紧急求助:jsp 在windows下访问sqlserver能正常显示数据库里的中文,而在linux下就显示?(乱码)
- String问题
- 帮我看看,为什么错了啊?怎么改??
- 怎样把从一个目录下的文件目录和名称写入一个文本文件?
- 急急急***VJ++的安装系统不兼容问题***
- 关于数组付值?各位高手请进!!俺是最菜的,呵呵:)
- 俺初学Java,有个问题请教,写了一段Java小程序(看里面),为什么没有运行结果:
- JAVA里怎么利用HTTP连接来进行数据传输?
- 求助:求字符串中的最长单词及其长度
应该这样,所有操作完毕再close;
finally{
stmt.close();
conn.close();
}
如果我的excuteQuery中加入了 stmt.close(); test()里取得的RS就是空的----------------------------------------------------------------------public void close()A Statement object is automatically closed when it is garbage collected. When a Statement object is closed, its current ResultSet object, if one exists, is also closed. (当一个Statement对象关闭时,由它产生的ResultSet也将关闭)当然文档也讲说了:
It is generally good practice to release resources as soon as you are finished with them to avoid tying up database resources.
finally{
stmt.close();
conn.close();
}
这点很重要,