0
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
が返されます。どんなアイデア、なぜ?
それは実装依存である
//多くのコード。 JDBCでは、サポートする必要はありません。 –
'int []'または 'String []'を使って自動生成された列を指定するバリエーションを試しましたか? – Stavr00
@ Stavr00はい、バッチ処理のために 'PreparedStatement'にバリアント' int [] 'または' String [] 'を試しましたが、' getGeneratedKeys() 'メソッドでは' ResultSet'は空です。 – fabfas