準備されたステートメントで Java クエリを使用するときに、DB クエリから自動生成されたキーを取得する方法はありますか。
たとえば、AutoGeneratedKeys が次のように機能することはわかっています。
stmt = conn.createStatement();
stmt.executeUpdate(sql, Statement.RETURN_GENERATED_KEYS);
if(returnLastInsertId) {
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
auto_id = rs.getInt(1);
}
でも。準備済みステートメントで挿入を実行したい場合はどうすればよいですか。
String sql = "INSERT INTO table (column1, column2) values(?, ?)";
stmt = conn.prepareStatement(sql);
//this is an error
stmt.executeUpdate(Statement.RETURN_GENERATED_KEYS);
if(returnLastInsertId) {
//this is an error since the above is an error
ResultSet rs = stmt.getGeneratedKeys();
rs.next();
auto_id = rs.getInt(1);
}
私が知らないこれを行う方法はありますか。PreparedStatements が自動生成 ID を返すことができないことは、javadoc からのようです。