天天看點

java generated_java – 為什麼getGeneratedKeys()将“GENERATED_KEY”作為列名傳回?

我正在玩JDBC /

MySQL 5.1.我建立了一個插入查詢,将一些資料插入到表中,并希望從新建立的行傳回生成的鍵.但是,當我通過“id”引用列時,這是我的PK和自動增量列.

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作為列名?