java - Why does getGeneratedKeys() return "GENERATED_KEY" as column name? -
java - Why does getGeneratedKeys() return "GENERATED_KEY" as column name? -
i'm playing jdbc/mysql 5.1. created insert
query insert info table , want homecoming generated key newly created row. however, when go reference column "id" pk , auto-increment column.
preparedstatement ps = st0rm.getinstance().getdatabase("main") .prepare("insert quests (name,minlevel,start_npc,end_npc) values(?,?,?,?)", true); // creates prepared statement 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 column name is: generated_key q = new quest(keys.getint(1)); // column index generated key, no error thrown. q = new quest(keys.getint("id")); // actual column name, line throws sqlexception // ... }
so, question: why resultset.getgeneratedkeys
utilize generated_key
column name?
you shouldn't retrieve these columns name. index, since there can ever 1 column mysql , auto_increments returns value(s) can exposed statement.getgeneratedkeys().
currently mysql server doesn't homecoming info straight create ability retrieve these columns name in efficient manner possible, why i'm marking "to fixed later", since can, 1 time server returns info in way driver can use.
from here (in 2006!).
java mysql jdbc
Comments
Post a Comment