java 运行如下查寻15次,程序就当,求死。。

kilmic 2009-12-28 01:22:52
java 运行如下查寻15次,程序就当,而且每次都是运行15次之后,程序就没反应了,哪位大哥救我一下。

public void ZZ(L1PcInstance pc,int money) {
Connection con = null;
PreparedStatement pstm = null;
ResultSet rs = null;
int Point =0;
pc.getQuest().set_step(10000, 0);
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("select * from user_register where name=?");
pstm.setString(1, pc.getName());
rs = pstm.executeQuery();
if (rs.next()) {
if(money+rs.getInt("event_point")<2000000000){
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("UPDATE user_register SET event_point=event_point+? WHERE name =?");
pstm.setInt(1, money);
pstm.setString(2, pc.getName());
pstm.execute();
} catch (SQLException e) {
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}
pc.sendPackets(new S_SystemMessage("您已成功向交易中心转账:"+money));
}
}else{
try {
con = L1DatabaseFactory.getInstance().getConnection();
pstm = con.prepareStatement("select password from accounts where login=?");
pstm.setString(1, pc.getAccountName());
rs = pstm.executeQuery();
if(rs.next()){
pstm = con
.prepareStatement("INSERT INTO user_register SET name = ?, e_pass = ?, event_point = ?");
pstm.setString(1, pc.getName());
pstm.setString(2, rs.getString("password"));
pstm.setInt(3, money);
pstm.execute();
pc.sendPackets(new S_SystemMessage("您已成功开通离线交易,并转账:"+money));
}
} catch (SQLException e){
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}
}

SQLUtil.close(pstm);
SQLUtil.close(con);
SQLUtil.close(rs);

} catch(SQLException e){
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}

}
...全文
115 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zhuwen9 2010-01-01
  • 打赏
  • 举报
回复
学习啦!
crazylaa 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kilmic 的回复:]
问题解决了,结贴说明一下

1.回复的朋友所说的连接未关闭,不是问题的原因,因为在最外层try语句内,有finally SQLUtil.close;

2.真正原因是内层的try,重定义了数据连接con变量,即在内外try语句中都出现了同一个con的两次定义

谢谢各位了:)
[/Quote]
晕,还是连接没关,内层的没关。
youlaiyouwang 2009-12-28
  • 打赏
  • 举报
回复
数据库连接没关闭,如果你设置数据库最大连接数为100,就是运行100次,当掉。
lizhey314 2009-12-28
  • 打赏
  • 举报
回复
try{..}
catch(Exception e)(..)
finally(
if(rs != null)rs.close();
if(pstm != null)pstm.close();
if(con != null)con.close();
)
很对!!
笨沙发 2009-12-28
  • 打赏
  • 举报
回复
try{..}
catch(Exception e)(..)
finally(
if(rs != null)rs.close();
if(pstm != null)pstm.close();
if(con != null)con.close();
)
zl3450341 2009-12-28
  • 打赏
  • 举报
回复
finally里面关闭连接
kilmic 2009-12-28
  • 打赏
  • 举报
回复
问题解决了,结贴说明一下

1.回复的朋友所说的连接未关闭,不是问题的原因,因为在最外层try语句内,有finally SQLUtil.close;

2.真正原因是内层的try,重定义了数据连接con变量,即在内外try语句中都出现了同一个con的两次定义

谢谢各位了:)
kilmic 2009-12-28
  • 打赏
  • 举报
回复
将后面的代码做如下修改后,仍然如此,15次就当,我设置mysql max_connections=1500

pc.sendPackets(new S_SystemMessage("打开登录器即可,进入角色名与账号密码即可参与离线交易。"));
}
} catch (SQLException e){
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}
}
} catch(SQLException e){
_log.log(Level.SEVERE, e.getLocalizedMessage(), e);
}finally{
SQLUtil.close(pstm);
SQLUtil.close(con);
SQLUtil.close(rs);
}

发帖
Java

4.9w+

社区成员

Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
帖子事件
创建了帖子
2009-12-28 01:22
社区公告
暂无公告