java 数据库连接关闭 的问题
由于程序架构成对象层数据库操作层和反射层,所以尽量要低耦合才行.由对象层方法调用数据库操作层方法和反射层方法后最终返回所需要的bean或者list或者实现增加删除修改等所...
由于程序架构成对象层 数据库操作层 和反射层,所以尽量要低耦合才行.
由 对象层方法调用数据库操作层方法和反射层方法后最终返回所需要的bean或者list或者实现增加删除修改等
所以数据库操作层里不希望有反射,但是现在面临一个问题,数据库操作层的find方法必须要返回查到的数据,这个数据如果是rs记录集的话,那rs就只能在外面的对象层去关闭,那么stmt也需要传出到对象层,不然的话stmt怎么关闭呢.
还有我试过conn stmt rs 都在对象层 定义,全部传入数据库操作层,最后只返回rs,rs非空能关闭,而stmt是空,证明stmt必须传出来再关,即便是它在外面定义的,也必须传出来,否则stmt是空的,关闭无效.
所以为了解决这个问题,我考虑把这三个对象弄到 一个类里,在外面初始化类的对象,然后把这个对象传入,完事h后把对象return到对象层再顺序关闭里面的属性,这样可行么? ??
不想用 连接池 因为 不是企业级大数据量访问,能和普通 asp访问数据库效率在一个档次上就可以了 展开
由 对象层方法调用数据库操作层方法和反射层方法后最终返回所需要的bean或者list或者实现增加删除修改等
所以数据库操作层里不希望有反射,但是现在面临一个问题,数据库操作层的find方法必须要返回查到的数据,这个数据如果是rs记录集的话,那rs就只能在外面的对象层去关闭,那么stmt也需要传出到对象层,不然的话stmt怎么关闭呢.
还有我试过conn stmt rs 都在对象层 定义,全部传入数据库操作层,最后只返回rs,rs非空能关闭,而stmt是空,证明stmt必须传出来再关,即便是它在外面定义的,也必须传出来,否则stmt是空的,关闭无效.
所以为了解决这个问题,我考虑把这三个对象弄到 一个类里,在外面初始化类的对象,然后把这个对象传入,完事h后把对象return到对象层再顺序关闭里面的属性,这样可行么? ??
不想用 连接池 因为 不是企业级大数据量访问,能和普通 asp访问数据库效率在一个档次上就可以了 展开
2个回答
展开全部
直接关connection:
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
conn = null;
}
写个工具类来关也可以:
public static void close(Connection conn) {
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
conn = null;
}
}
注意,在有返回sql相关对象的函数里不要关connection,例如resultset、statement、preparedstatement,呵呵返回connection的就更不用说了;如果connection是几个函数公
用的,那就在这几个函数都调用完了再关闭;其他情况最好在函数里把connection关了!!
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
conn = null;
}
写个工具类来关也可以:
public static void close(Connection conn) {
if(conn != null) {
try {
conn.close();
} catch(Exception e) {
e.printStackTrace();
}
conn = null;
}
}
注意,在有返回sql相关对象的函数里不要关connection,例如resultset、statement、preparedstatement,呵呵返回connection的就更不用说了;如果connection是几个函数公
用的,那就在这几个函数都调用完了再关闭;其他情况最好在函数里把connection关了!!
追问
不懂就别回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询