我希望使用JDBC批处理语句将一批记录插入到数据库(如DB2)中,并获取插入行的自动生成的ID。我该如何使用JDBC API实现?
示例代码:
String SQL_INSERT = "INSERT INTO TABLE1 (CURRENT_TIMESTAMP) VALUES (?) ";
Connection connection = DriverManager.getConnection("jdbc:db2://localhost:900/DATABASE");
PreparedStatement statement = connection.prepareStatement(SQL_INSERT, Statement.RETURN_GENERATED_KEYS);
// first batch
statement.setTimestamp(1, getCurrentTimestamp());
statement.addBatch();
// second batch
statement.setTimestamp(1, getCurrentTimestamp());
statement.addBatch();
int[] insertedRows = statement.executeBatch();
ResultSet generatedKeys = statement.getGeneratedKeys();
批量语句执行成功,所有行都已插入数据库。但是当调用
getGeneratedKeys()
检索生成的键时,它返回一个空的ResultSet
。有任何想法,为什么会这样?
int[]
或String[]
来指定自动生成的列的变体吗? - Stavr00PreparedStatement
中尝试了变量int[]
或String[]
进行批处理,但在getGeneratedKeys()
方法上,ResultSet
为空。 - fabfasFINAL TABLE
特殊对象来返回插入的元素。 - Stavr00getGeneratedKeys()
方法,否则期望它应该抛出SQLFeatureNotSupportedException
异常。 - fabfas