我对java.sql.PreparedStatement上的ExceptionHandling有一个问题。
我有一个PreparedStatement:
insertTEZDETAIL = new XPreparedStatement(con, "INSERT INTO TEZDETAIL (PACKAGE_ID, LFDNR, ARCHIVTAG, PAYINF)"
+ " Values(?, ?, ? ,XMLPARSE(DOCUMENT CAST(? AS CLOB)))" );
并批量添加许多语句:
insertTEZDETAIL.setInt(1, paket_id);
insertTEZDETAIL.setInt(2, Counter1);
insertTEZDETAIL.setString(3, archiv_dat);
SQLXML xmlvar = con.createSQLXML();
xmlvar.setString(gesXML.toString());
insertTEZDETAIL.setSQLXML(4, xmlvar);
insertTEZDETAIL.addBatch();
现在我执行批处理:
public static void DB2Commit()
{
try
{ insertTEZDETAIL.executeBatch();
} catch (SQLException ex)
{ for ( ; ex != null ; ex = ex.getNextException ())
{
ex.printStackTrace ();
}
try
{
con.rollback();
} catch (SQLException e) {
e.printStackTrace();
System.exit(12);
}
System.err.println("Fehler beim execute Batch");
System.exit(12);
}
}
使用“Forech异常循环”,我得到所有异常, 但它有一种方法来获取此Statement的GeneratedKey的异常是什么? 使用RETURN_GENERATED_KEYS它不起作用,可能因为Batch? 或者也许是为了自己获得声明? 因为我有一个类用generateKey打印出完整的Statement,就像DB2获取Statement一样。
感谢回答,
弗洛里安
答案 0 :(得分:0)
您可以使用
获取生成的密钥PreparedStatement pstmt = connection.prepareStatement(query, Statement.RETURN_GENERATED_KEYS);
int rowsAffected = pstmt.executeUpdate();
ResultSet rs = pstmt.getGeneratedKeys();
int newId = -1;
if (rs.next())
{
newId = rs.getInt(1);
}
rs.close();
pstmt.close();