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