接手别人的项目现在每个方法都有一个关闭。
finally {
try {
rs.close();
pstmt.close();
rs2.close();
pstmt2.close();
rs3.close();
pstmt3.close();
rs4.close();
pstmt4.close();
rs5.close();
pstmt5.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
现在我想写个方法
private void CloseStatement(Statement ...st){
for (int i = 0; i < st.length; i++) {
if(st[i]!=null){
try {
st[i].close();
} catch (SQLException e) {
System.out.println("关闭Statement失败");
}
}
}
}
不知道可行不?各位来指点下。原理上应该可以,不过由于自己不知道怎么测试,所以来问下大家了呵
------解决方案--------------------
rs
这都是一些对象,
如果你把这些对方都放到一个数组里面进行挨个遍历关闭的话,肯定是可以的。
但是感觉好像不是那么的直观。
------解决方案--------------------
怎么开这么多个ResultSet和Statement。估计是几百行代码挤在一起了,这种项目只有两个字
蛋疼

------解决方案--------------------
出现的太操蛋了。。
------解决方案--------------------
第一个是错误的写法。rs close的时候出异常了不能close ps 和 con
你的方法可行,可以把Statement? 改成Object
然后instanceof 一个方法都搞定了。
真要这么做,如果全修改一下时间少的话,还是改程序吧
------解决方案--------------------
一个serlvet有这么长,说明servlet用来处理流程了,不好,我servlet只会又来获取去和发送值
------解决方案--------------------
楼主改完这次,下次千万别做了,要不然直接要累趴下了
------解决方案--------------------
/**
* 参数顺序 ResultSet,然后Statement,最后Connection
* @param objs
*/
public static void close(Object ...objs)
{
for(int i = 0; i < objs.length; ++i)
{
if(objs[i] instanceof Statement)
{
try{
((Statement)objs[i]).close();
}catch(SQLException e){
}
}else if(objs[i] instanceof ResultSet){
try{
((ResultSet)objs[i]).close();
}catch(SQLException e){
}
}else if(objs[i] instanceof Connection){
try{
((Connection)objs[i]).close();
}catch(SQLException e){
}