私は現在、ビデオ チュートリアルを見ていますが、次のコードで本当に混乱しています。
public static boolean insert(Member mbr) throws Exception {
String SQL = "INSERT INTO test (first_name, last_name) " +
"VALUES (?, ?)";
ResultSet keys = null;
try (
Connection con = DBUtil.getConnection(DBType.MYSQL);
PreparedStatement stmt = con.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
) {
stmt.setString(1, mbr.getFname());
stmt.setString(2, mbr.getLname());
int affected = stmt.executeUpdate();
if (affected == 1) {
keys = stmt.getGeneratedKeys();
keys.next();
int newKey = keys.getInt(1);
mbr.setMemberid(newKey);
} else {
System.err.println("No rows affected");
return false;
}
} finally {
if (keys != null) keys.close();
}
return true;
}
メソッドについてstmt.getGeneratedKeys()
ですが、Statement オブジェクトを実行した結果、自動生成されたキーを返すのに、なぜgetInt()
メソッドを呼び出す必要があるのでしょうか。
また、デフォルトでは、カーソルは挿入された行の前を指してnext()
いget.GeneratedKeys()
ます。next()
を取得する前にカーソルが最初の結果行に移動するように、メソッドを最初に呼び出すべきではありませんGeneratedKey
か?