COBOL-DB2 -803 эквивалент в Java

Кобол: [ВСТАВЬТЕ КОД]

 EVALUATE SQLCODE
           WHEN +000
            ...
           WHEN -803
             ...
           WHEN OTHER
             ...
       END-EVALUATE.

Этот код оценивает SQLCODE, и повторяющаяся запись обрабатывается здесь -803. Ошибка -803: ВСТАВЛЕННОЕ ИЛИ ОБНОВЛЕННОЕ ЗНАЧЕНИЕ НЕДОПУСТИМО, ПОТОМУ ЧТО ИНДЕКС В ИНДЕКСНОМ ПРОСТРАНСТВЕ indexspace-name ОГРАНИЧИВАЕТ КОЛОННЫ ТАБЛИЦЫ, ЧТО НЕТ ДВЕ РЯДА МОГУТ СОДЕРЖАТЬ ДУБЛИКАТНЫЕ ЗНАЧЕНИЯ В ЭТИХ КОЛОННАХ. Избавиться от существующей строки - X record-id.

Другими словами, ошибка дублированного ключа.

В Java я обычно делаю то же самое, запуская запрос на выборку, и проверяю наличие записи в базе данных, и, если она не существует, я вставляю запись.

Есть ли другой способ справиться с ситуацией -803 в Java?

1 ответ

Решение

В Java вы хотите поймать SQLException и проверьте код ошибки:

PreparedStatement stmt = ...;
try
{
    stmt.executeUpdate();
}
catch (SQLException e) {
    if (e.getErrorCode() == -803)
    {
        // handle duplicate entry
    }
    else
    {
        // handle other errors
    }
}

Обратите внимание, этот код специфичен для DB2, так как -803 - код ошибки, специфичный для поставщика.

Другие вопросы по тегам