乌龙事件 以及 SQLException的 nextException getMessage

今天搞了一个乌龙 ,忘记了数据库里已经有一个 order_id为4的值 , 然后我自己这里开始循环 1,2,3 都是对的, 但是到第四条怎么就错了呢 , 然后开始查 它报的错误, 它报的错是
[quote]

com.ibm.db2.jcc.am.BatchUpdateException: [jcc][t4][102][10040][4.13.127] 批处理出现故障。虽然已经提交了批处理,但是该批处理的某个成员至少发生了一个异常。
使用 getNextException() 来检索已经过批处理的特定元素的异常。 ERRORCODE=-4229, SQLSTATE=null
[/quote]

但实际上, 并非这个错误,这个错误是因为在批处理的时候 一个总的错误,实际上是某个批处理子项报的错误, 然后用了getNextException就得到了具体的错误,
发现是这个
Error for batch element #1: DB2 SQL Error: SQLCODE=-803, SQLSTATE=23505, SQLERRMC=5;MPOS.BAT2_CMP_RESULT, DRIVER=4.13.127

然后才想起来 4 这个值已经被我用过了, 而这个字段是有唯一索引的,然后重新弄就好了



public void batchInsertUserWithDbSwitchKey(int number, int start, Connection conn) throws SQLException{
conn.setAutoCommit(false);

// "BAT2_CMP_RESULT (BATID, SRC, TRTM, CHANNEL_NO,CHL_ORDER_ID,MY_ORDER_ID,MCH_NO, SEC_MCH_NO," +
// "TRAM, TRTP, REL_ORDER_ID,MEMO, BRH_ID, MY_MCH_NO,MY_SEC_MCH_NO,TERM_NO," +
// "COST_RATE,TOTAL_RATE,COST,TOTAL_FEE,RZAMT,CKTURN,CKFG,CKDT,TRADE_TYPE," +
// "MCH_ORDER_ID,PAYBANK,FZFG,MY_PTMCH_RATE,MY_PTMCH_FEE,D0FG,TRADE_CODE, " +
// "CLDT,BANK_CODE) " +
// " values(?,?,?,?,?,?,?,?,"
// + "?,?,?,?,?,?,?,?,"
// + "?,?,?,?,?,?,?,?,?,"
// + "?,?,?,?,?,?,?,?,?) " );

PreparedStatement ps = conn.prepareStatement("insert into " +
"BAT2_CMP_RESULT (BATID, MY_ORDER_ID, MCH_NO, SEC_MCH_NO," +
"TRAM, CKTURN, CKFG, BANK_CODE) " +
" values(?,?,?,?,?,?,?,?) " );
try{
for(int i = 1000; i <= 2000; i++){

ps.setLong(1, 802L);
ps.setString(2, String.valueOf(i));
ps.setString(3, "1");
ps.setString(4, "2");
ps.setDouble(5, 200);
ps.setInt(6, 1);
ps.setInt(7, 1);
ps.setString(8, "303100");

ps.addBatch();

}
ps.executeBatch();
}catch(SQLException e){
SQLException e1 = e.getNextException();
while(e1 != null){
System.out.println(e1.getMessage());
e1 = e1.getNextException();
}

e.printStackTrace();

}
conn.commit();
conn.close();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值