相关疑难解决方法(0)

为什么getGeneratedKeys()将"GENERATED_KEY"作为列名返回?

我正在玩JDBC/MySQL 5.1.我创建了一个insert查询,将一些数据插入到表中,并希望从新创建的行返回生成的键.但是,当我通过"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
   // ...
} …
Run Code Online (Sandbox Code Playgroud)

java mysql jdbc

6
推荐指数
1
解决办法
1698
查看次数

标签 统计

java ×1

jdbc ×1

mysql ×1