- 论坛徽章:
- 0
|
前不久上了个WEB项目,JSP+TOMCAT5+SYBASE
实施后SYBASE经常性死锁,然后down库,此数据库原来就有,上面
在跑以前的delphi系统,应该说数据库没问题.只可能是JSP程序
造成这种现象.
JSP页面中通常有如下类似代码:
Connection cn=cm.getConn();
ResultSet rs=sh.searchQK(cn,par1);
while(rs.next()){
out.println(rs.get(1));}
rs.close();
cn.close();
说明:
cm是声明使用的一个后台bean,方法getConn()是通过读取一个写
有数据库连接信息的配置文件用Class.forName()及DriverManage
r.getConnection()生成一个Connection对象,并将其return.
由于在SQL语句中创建了临时表,使得SQL执行后要立即断开Connecti
on,所以没有用DataSource连接池得到Connection.
sh是声明使用的一个后台bean,方法searchQK()定义大致如下:
public ResultSet searchQK(Connection cn,String par1){
Statement stmt =cn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sql = " UPDATE TABLE1 SET NUM=100 WHERE 1=1 ";
if(!par1.equals("" ){sql += " AND BH="+par1+" ";}
sql += "SELECT * FROM TABLE1 ";
ResultSet rs = stmt.executeQuery(sql);
return rs;}
问:
1.会否在页面层频繁开关Connection连接引起死锁down库?
2.会否用Statement一次执行几条SQL组成的复合SQL(如UPDATE+SELECT)引起死锁down库?
这样做是否一定要先cn.setAutoCommit(false);然后cn.commit();
3.还有什么其它可能的原因吗?
另:
我用的数据库driver是jconn2.jar,数据库打了jconnect补丁. |
|