java中的COBOL-DB2-803等价物

java中的COBOL-DB2-803等价物,java,cobol,Java,Cobol,Cobol:[插入代码] EVALUATE SQLCODE WHEN +000 ... WHEN -803 ... WHEN OTHER ... END-EVALUATE. 此代码计算SQLCODE,重复条目在这里由-803处理。一个-803错误是插入的或更新的值无效,因为索引空间indexspace name中的索引约束表的列,因此这些

Cobol:[插入代码]

 EVALUATE SQLCODE
           WHEN +000
            ...
           WHEN -803
             ...
           WHEN OTHER
             ...
       END-EVALUATE.
此代码计算SQLCODE,重复条目在这里由-803处理。一个-803错误是插入的或更新的值无效,因为索引空间indexspace name中的索引约束表的列,因此这些列中不能有两行包含重复的值。现有行的RID为X记录id

换句话说,重复的键错误

在java中,我通常通过触发一个select查询来执行相同的操作,并在数据库中查找存在的条目,如果该条目不存在,则插入记录


在Java中还有其他方法处理-803情况吗?

在Java中,您希望捕获SQLException并测试错误代码:

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

注意,此代码是特定于DB2的,因为-803是特定于供应商的错误代码。

在Java中,您希望捕获SQLException并测试错误代码:

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

注意,此代码是特定于DB2的,因为-803是特定于供应商的错误代码。

这是COBOL中处理重复键错误的常用方法。您可以通过在插入之前执行选择来防止此类错误。如果SELECT返回一行,则改为执行更新。@GilbertLeBlanc:SELECT before INSERT可能由于竞争条件而中断,除非您有可重复的读取,这会带来其他方面的问题。仍然需要处理数据库错误。@Joachim Sauer:好的,主要是防止重复的键错误。我想知道是否有人将-803错误编码为OP代码中的ok,update指示符。这看起来像的重复:这是COBOL中处理重复键错误的常用方法。您可以通过在插入之前执行选择来防止此类错误。如果SELECT返回一行,则改为执行更新。@GilbertLeBlanc:SELECT before INSERT可能由于竞争条件而中断,除非您有可重复的读取,这会带来其他方面的问题。仍然需要处理数据库错误。@Joachim Sauer:好的,主要是防止重复的键错误。我想知道是否有人将-803错误编码为OP代码中的ok,update指示符。这看起来像是以下代码的重复: