问题是这样的,目前有个应用,平时没有问题,但极少数情况下会抛出数据库死锁的异常,我怀疑有可能是并发操作的时候出现,检查之后定位到这一段执行update的语句,请帮忙看看,有没有可能导致死锁
调用这个方法的是methodA,methodA中先把Autocommit设为false,然后循环调用executeUpdate(String sql),因为可能会有多条sql需要执行,最后commit,再回复Autocommit为true
executeUpdate(String sql)的代码如下
[code="java"]
public int executeUpdate(String sql) throws SQLException {
//LogUtil.getLogger().debug("SQL [" + sql + "]");
stmt = conn.createStatement();
int count = stmt.executeUpdate(sql);
if(stmt != null){
stmt.close();
}
return count;
}
[/code]
有个需要说明的是methodA和executeUpdate都在同一个类中,Connection conn和Statement stmt都是全局的,会不会是stmt创建的时候出的问题,是否需要加上synchronized