http://docs.oracle.com/javase/1.4.2/docs/guide/jdbc/getstart/preparedstatement.htmlから次のコード例を取得しました
3 つの質問があります。
- LAST、FIRST、HOMEの3つの列しかないことを考えると、「keyColumn」は何を指しますか。
- 生成されたキーの繰り返しにループが使用されるのはなぜですか? その 1 つの挿入ステートメントに対して複数の行が返されますか?
- テーブルごとに複数の生成されたキーをサポートするデータベースはどれですか?
String sql = "INSERT INTO AUTHORS (LAST, FIRST, HOME) VALUES " +
"(?, ?, ?, keyColumn)";
PreparedStatement addAuthor = con.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
addAuthor.setString(1, "Wordsworth");
addAuthor.setString(2, "William");
addAuthor.setString(3, "England");
int rows = addAuthor.executeUpdate();
ResultSet rs = stmt.getGeneratedKeys();
if (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
do {
for (int i = 1; i <= colCount; i++) {
String key = rs.getString(i);
System.out.println("key " + i + "is " + key);
}
}
while (rs.next();)
}
else {
System.out.println("There are no generated keys.");
}