Как я могу обновить записи в моей базе данных?
Я работаю с БД в Oracle. У меня есть таблица со столбцами RQUID (VARCHAR), STATUS (VARCHAR) и XMLDATA (CLOB). Я хочу обновить записи в этой таблице по RQUID. Когда я обновляю STATUS и XMLDATA, все идет хорошо. Когда xmlData = null, я хочу установить значение null для XMLDATA в таблице, но в строке int rows = pstmt.executeUpdate();
я получаю следующее сообщение:
[WARN] 2020-08-11 10:46:54,038 [pool-2-thread-1] com.example.dao.AbstractDAO closeCLob - java.sql.SQLException: ORA-22275: invalid LOB locator specified
и моя программа зависает. Также запись не обновляется. У вас есть предложения, как заставить мою программу обновлять записи в обоих случаях: когда xmlData = someData и когда xmlData = null?
Мой код:
public boolean updateRecord(String rqUid, Integer code, String xmlData) throws MyException {
if (rqUid != null) {
String sql = "UPDATE MY_TABLE SET STATUS=?, XMLDATA=? WHERE RQUID=?";
try (Connection con = pool.getConnection();
PreparedStatement pstmt = con.prepareCall(sql)) {
pstmt.setString(1, (code != null) ? code.toString() : null);
pstmt.setString(2, xmlData);
pstmt.setString(3, rqUid);
int rows = pstmt.executeUpdate();
return rows > 0;
} catch (Exception e) {
String errorMessage = "Ошибка обновления записи";
LOGGER.info(errorMessage, e);
throw new MyException(errorMessage + ".", e);
}
} else {
return false;
}
}
Спасибо за любую помощь!