关于Statement关闭的问题

DavidGong 2005-11-18 09:02:27
大家帮满个看一下一下代码
PreparedStatement ps = null;
ps = conn.PrepareStaement("Insert into table values(?,?)");
ps.setString(1,"sdfd");
ps.setString(2,"fsd");
ps.executeUpdate();
//请问在这里要不要加一句ps.close()语句呢??
ps=Conn.PrepareStatement("Insert into table values(?,?,?)");
ps.setString
……
ps.executeUpdate();
……
我个人觉得应该加一句的,因为每次执行conn.PrepareStatement的时候,都返回了一个实现了Statement接口的对像,而ps只不过是指向了另外一个对象而已,前一个并没有销毁
...全文
447 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DavidGong 2005-11-18
  • 打赏
  • 举报
回复
如果新开一个Statement就关闭先前一个的话,那么象下面的stmt和ps是不是即意味着新开了ps,就会自动关闭stmt呢?如果是这样的话,下面的语句是不应可以继续执行的,意味在第二次执行stmt的时候,其实stmt已经关掉了,但是我试验过这样是可以的。这又怎么解释呢?

Statement stmt = conn.createStatement();
stmt.execute("start transaction");
try{
PreparedStatement ps = null;
ps = conn.PrepareStaement("Insert into table values(?,?)");
ps.setString(1,"sdfd");
ps.setString(2,"fsd");
ps.executeUpdate();
//请问在这里要不要加一句ps.close()语句呢??
ps=Conn.PrepareStatement("Insert into table values(?,?,?)");
ps.setString
……
ps.executeUpdate();
stmt.execute("commit");
}catch(Exception){
stmt.execute("rollback");
}
jFresH_MaN 2005-11-18
  • 打赏
  • 举报
回复
一般会自动关闭,但是我们最好不要让系统自动关闭,那个是不可靠的。
hy2003fly 2005-11-18
  • 打赏
  • 举报
回复
每新开一个statement或preparedstatement,前面的就会自动关闭。
kairwen 2005-11-18
  • 打赏
  • 举报
回复
个人认为,后面的statement会覆盖前面的,所以statement在使用过程中不用关闭,最后关闭一次即可.

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧