executeUpdate Java не работает должным образом - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть следующий код 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, и оно собирается на перехват и никогда не входит в условие if.

Ответы [ 2 ]

3 голосов
/ 05 декабря 2011

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 голос
/ 05 декабря 2011

Поскольку состояния 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...