SQLException - генерируемые ключи не запрашиваются (MySQL)

Я получаю эту ошибку, когда я создаю нового персонажа в моей игре, в CreateCharHandler он отправляет "saveToDb (false);" но когда я играю с другим символом, который я создал вручную, я могу сохранить saveToDb (true); без ошибок. Пожалуйста, помогите, почему это происходит?

http://i56.tinypic.com/oh1pn5.png

Метод SaveToDb http://pastebin.com/9sT5XBxp

строка 3514 это:

ResultSet rs = ps.getGeneratedKeys();

Заранее спасибо!

Ответ 1

В вашем SQLException четко указано, что:

Вам нужно указать Statement.RETURN_GENERATED_KEYS на Statement.executeUpdate() или Connection.prepareStatement().

Это может быть достигнуто следующим образом (добавление дополнительного значения в метод Connection.prepareStatement()):

String SQL = ""; //whatever my String is
PreparedStatement ps = connection.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, "value");
//Other necessary ps.setXXX() methods

//now update
ps.executeUpdate();

ResultSet rs = ps.getGeneratedKeys();

Здесь Statement.RETURN_GENERATED_KEYS.

Надеюсь, это поможет!

PS: Полезный ресурс.


@Charlie berg, так как вы предпочитаете лениться, я изменил строку 13 вашего кода, чтобы включить Statement.RETURN_GENERATED_KEYS:

ps = con.prepareStatement("INSERT INTO characters (level, fame, str, dex, luk, `int`, exp, hp, mp, maxhp, maxmp, sp, ap, gm, skincolor, gender, job, hair, face, map, meso, hpMpUsed, spawnpoint, party, buddyCapacity, messengerid, messengerposition, mountlevel, mounttiredness, mountexp, equipslots, useslots, setupslots, etcslots, monsterbookcover, watchedcygnusintro, vanquisherStage, dojopoints, lastDojoStage, finishedDojoTutorial, vanquisherKills, matchcardwins, matchcardlosses, matchcardties, omokwins, omoklosses, omokties, givenRiceCakes, partyquestitems, jailtime, accountid, name, world) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", Statement.RETURN_GENERATED_KEYS);

Кроме того, Statement класс имеет пакет java.sql (убедитесь, что вы правильно импортируете).: -)