6
私はJDBC/MySQL 5.1で遊んでいます。 insert
クエリを作成して、テーブルにデータを挿入し、新しく作成された行から生成されたキーを返したいとします。しかし、私は私のPKと自動増分列である "ID"によって列を参照するときに行く。なぜgetGeneratedKeys()は列名として "GENERATED_KEY"を返しますか?
PreparedStatement ps = St0rm.getInstance().getDatabase("main")
.prepare("INSERT INTO quests (name,minlevel,start_npc,end_npc) VALUES(?,?,?,?)", true); // creates a prepared statement with flag RETURN_GENERATED_KEYS
// ...
int affected = ps.executeUpdate();
ResultSet keys = ps.getGeneratedKeys();
if (affected > 0 && keys.next()) {
St0rm.getInstance().getLogger().warning(String.format("ID Column Name: %s", keys.getMetaData().getColumnName(1))); // says the column name is: GENERATED_KEY
q = new Quest(keys.getInt(1)); // column index from the generated key, no error thrown.
q = new Quest(keys.getInt("id")); // actual column name, line throws a SQLException
// ...
}
だから、私の質問:はなぜResultSet.getGeneratedKeys
は、列名としてGENERATED_KEY
を使用していますか?