弱弱问题麻烦了 SQL2000关闭数据库在那里关。。。

jy02411368 2008-08-01 04:15:53
我分不够了 麻烦大家先帮帮忙 救命要紧啊 哎 以前就不重视这个问题 现在终于 项目运行在线了出现巨大问题。。原因是数据库没关所导致

我把JSP BEAN DB3个部分代码贴出来大家给看看getConnClose();方法应该放在哪里吧。。代码很简单的 不麻烦看一看吧

DB类查询方法:

public ResultSet Query(String sql){
try{
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);

return rs;

}catch(Exception ex){
System.out.println("DB1: "+ex.getMessage());
}

return null;
}
BEAN类业务方法:

public List getProducts(){

String sql="select * from PostsTable";
ResultSet rs=db.Query(sql);
List li = new ArrayList();
try {
while(rs.next()){
li.add(rs.getString("posts"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return li;

}

JSP其实也不用写了吧。。。要是需要在JSP就直接说好了 但是这个我认为不是在JSP里关 但是我放在
DB类的public ResultSet Query(String sql)方法里也不行因为放在RETURN NULL前 显然没什么意义 因为上面如果查到了结果的话那么根本就不会执行这里 可以我放在RETURN RS上面 项目运行起来又说连接已经关闭。。。。
麻烦大家给看看啊 到底放在哪里关才合适啊 谢谢!!!!!!!很急
这个是关闭的方法。。
public void getConnClose(){
try {
rs.close();
} catch (SQLException e) {

e.printStackTrace();
}

try {
stmt.close();
} catch (SQLException e) {

e.printStackTrace();
}

try {
conn.close();
} catch (SQLException e) {

e.printStackTrace();
}
}
...全文
92 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xueshenzhou 2008-08-01
登记吧result铲倒持久化对象或list后就可以关闭了啊
更改或插入完就可以关了啊
回复
jy02411368 2008-08-01
其实感觉没必要在查了 就放在那里合适就可以了
回复
jofy1004 2008-08-01
.............
回复
tacoley 2008-08-01
你是什么数据库?
可以通过一些命令查找到当前数据库中什么地方没有关闭的.
回复
jy02411368 2008-08-01
o 对啦 补充一下这个是配过连接池的 不过应该没什么影响喔。。分很少是在没分了 大家多包涵
回复
jy02411368 2008-08-01
3喽的 经过我检验错误。。还是提示数据库已经关闭了!
不过还是感谢能回复我
回复
mike1980 2008-08-01
通常关闭连接的方法都写在数据访问类的finally中,
但是你这里的数据访问类的方法返回的是ResultSet,所以不适合写在数据访问类中。
建议你写在bean类的finally中。
回复
jy02411368 2008-08-01
我想问下3喽的 如果找到了RS直接就返回了 那么public ResultSet Query(String sql){
try{
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);

return rs;

}catch(Exception ex){
System.out.println("DB1: "+ex.getMessage());
} finally{
if (stmt != null) {
try {
stmt .close();
}
catch (Exception e) {
e.printStackTrace();
}
}
if (conn!= null) {
try {
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
难道程序还会执行下去???
回复
mike1980 2008-08-01
[Quote=引用 3 楼 panweijian 的回复:]
li.add(rs.getString("posts"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return li;

} finally {
try {
if (rs != null) {
rs.close();
}
} catch (Exception e) { }
}
[/Quote]

汗,有这种写法吗?
回复
jy02411368 2008-08-01
^_^
回复
lz是dodolook么??
回复
gwhdaxia 2008-08-01
一般都finally里释放,无论代码是否有问题,都会执行finally力的释放

public ResultSet Query(String sql)

建议不要直接返回RS,

回复
panweijian 2008-08-01
public ResultSet Query(String sql){
try{
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);

return rs;

}catch(Exception ex){
System.out.println("DB1: "+ex.getMessage());
} finally{
if (stmt != null) {
try {
stmt .close();
}
catch (Exception e) {
e.printStackTrace();
}
}
if (conn!= null) {
try {
conn.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}

return null;
}
BEAN类业务方法:

public List getProducts(){

String sql="select * from PostsTable";
ResultSet rs=db.Query(sql);
List li = new ArrayList();
try {
while(rs.next()){
li.add(rs.getString("posts"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return li;

} finally {
try {
if (rs != null) {
rs.close();
}
} catch (Exception e) { }
}
回复
return li;
之前吧。。
可以直接写个finally来进行关闭,等你都取出来之后,关了。
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2008-08-01 04:15
社区公告
暂无公告