java的executeUpdate无法正常工作

时间:2011-12-05 11:14:59

标签: java oracle

我有以下java代码:

if (ps.executeUpdate() != 1)
  {
    // Error - did not insert one row
    String err = "insert unable to insert LocalUsage data: " + usg.toString();
    Logger.log(err, _MODULE_CLASS, Logger.DEBUG);
    throw new DaoException(err);
  }

如果查询有外键异常的问题,那么它将被抛出但它永远不会进入if内部。我该怎么办才能进入if并输出我的日志?

问题是这个if条件在try catch块中,并且它将进入catch并且永远不会进入if条件。

2 个答案:

答案 0 :(得分:3)

executeUpdate()可能会抛出SQLException,如其API文档中所述。您可能希望捕获该异常。

int count;
try {
    count = ps.executeUpdate();
} catch (SQLException e) {
    throw new DaoException("Exception while executing update: " + e.getMessage());
}

if (count != 1) {
    // ...
}

答案 1 :(得分:1)

由于docs状态,executeUpdate()可能会抛出异常,因此您的代码流将失败,之后您将无法进行任何处理,因为您的异常处理不正确。

我认为现在你的代码正在发生。

在进行数据库调用时,我建议你这样做:

int operationStatus;
try {
  operationStatus = ps.executeUpdate();
} catch(SQLException exp) {
    final String message = "SQL Exception while calling executeUpdate()";
    logger.error(message, exp);
    throw new DAOException(message, logger);
} catch(Exception exp) {
    final String message = "Exception while calling executeUpdate()";
    logger.error(message, exp);
    throw new DAOException(message, logger);
}  finally {
   //you may wish to clean up resources if they are not going to be used after this point.
}

if(operationStatus < 0) {
  //Next steps
}