数据库执行代码如下:
 try {
if (db == null)
{
db = new DbConn();
db.beginTrans();
}
sql.delete(0, sql.length() -1 );
sql.append("update ");
sql.append(table);
sql.append(" set status='");
sql.append(rpt.sta);
sql.append("' where rsq='");
sql.append(rpt.seq);
sql.append("' and mid='");
sql.append(rpt.mid);
sql.append("' ");

result = db.executeUpdate(sql.toString());
rpt.dealCount ++;
} catch (SQLException e) {
log.error("getErrorCode=" + e.getErrorCode() ,e);
if (db != null)
{
db.rollback();
db.close();
db = null;
nUpdatedReportCount -= nCount;
nCount = 0;
}
}最近老是出现java.sql.SQLException: Io 异常: Connection reset by peer: socket write error异常,数据更新经常失败。错误代码为:12700.java.sql.SQLException: Io 异常: Connection reset by peer: socket write error
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:334)
at oracle.jdbc.driver.OracleStatement.open(OracleStatement.java:562)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2786)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:608)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:684)
at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:100)
at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.java:57)
at oracle.jdbc.internal.OracleStatement$$EnhancerByProxool$$59486b3f.execute(<generated>)请教如何对代码进行改进,提高系统的稳定性。

解决方案 »

  1.   

    看下这个 文章http://hi.baidu.com/suofang/blog/item/5bd0fed3be6512d3a9ec9a3b.html
      

  2.   

    catch (SQLException e) {
                        log.error("getErrorCode=" + e.getErrorCode() ,e);
                                       }finally()
    {
                        if (db != null)
                        {
                            db.rollback();
                            db.close();
                            db = null;
                            nUpdatedReportCount -= nCount;
                            nCount = 0;
                        }}
    怎么也先这样写.
      

  3.   

    catch过后应该会执行的吧,不需要finally了吧