jdbc 一个类中方法的优化

zhushoujun 2010-06-27 04:53:36
public Article queryOneArticleByArticleId(String articleId) {
Article article=null;

DBManager dbc=Factory.getDBManagerInstance();

Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
/****还得使readCount加1******/
String sql0="update article set readCount=readCount+1 where articleId=?";

String sql="select * from article where articleid=?";
try {
conn=dbc.getConn();
pstmt=conn.prepareStatement(sql0);
pstmt.setString(1, articleId);
pstmt.executeUpdate();
/******问题在这句*********************/
pstmt.close();//这里到底要不要关嘛

pstmt=conn.prepareStatement(sql);
pstmt.setString(1, articleId);
rs=pstmt.executeQuery();
while(rs.next()){

·····略





问题:我想问的是,当执行两句sql语句时候,执行完第一句sql语句后以后,要不要pstmt.close()这句呢,

不要会不会不安全?或者无所谓呢?(实验的时候要不要这句都正常运行的,但是我想选择一种好的方法)


...全文
52 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhushoujun 2010-06-27
  • 打赏
  • 举报
回复
当然,finally 里面我会关掉所有的该关的东西的,只是想问一下要不要提前先关闭一下这里的pstmt,
zhushoujun 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lazy_p 的回复:]
在一个方法内,我建议先不关,这样可以可以提高效率,操作完了在方法后面的finally里面关掉,注意你的update最好放在事务里面!
[/Quote]

恩,
我是用了setAutoCommit(false)方法试过的,可惜mysql不支持,,还没有sqlserver试过,呵呵
宅男小何 2010-06-27
  • 打赏
  • 举报
回复
在一个方法内,我建议先不关,这样可以可以提高效率,操作完了在方法后面的finally里面关掉,注意你的update最好放在事务里面!
sl514 2010-06-27
  • 打赏
  • 举报
回复
那你的网站是不是只有一个人用啊?
如果1000个人,会生成1000个session,都不关闭,会宕机的


使用数据库连接池会保持一部分连接,不管你连不连,连了话,连接池给你一个,不连了,还给他就可以了
龙四 2010-06-27
  • 打赏
  • 举报
回复
一般是一下形式:
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

//init

try {
//
} finally {
try {
if(rs != null) {
rs.close();
}catch (Exception e){
//ignore
} finally {
try {
if(ps != null) {
ps.close();
}
} catch (Exception e) {
//ignore
} finally {
if(conn != null) {
conn.close();
}
}
}
}
}
zhushoujun 2010-06-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sl514 的回复:]
关吧。虽然不关问题也不大。
[/Quote]

能不能解释一下不关会有什么问题,呵呵
zhushoujun 2010-06-27
  • 打赏
  • 举报
回复
我知道可以用连接池(不过只会一点点哈),但是我想搞清这些细节呀,呵呵
sl514 2010-06-27
  • 打赏
  • 举报
回复
好点的方法就是 使用数据库连接池。
sl514 2010-06-27
  • 打赏
  • 举报
回复
关吧。虽然不关问题也不大。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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