Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLException-未请求生成的密钥(MySQL)_Java_Mysql - Fatal编程技术网

Java SQLException-未请求生成的密钥(MySQL)

Java SQLException-未请求生成的密钥(MySQL),java,mysql,Java,Mysql,当我在游戏中创建一个新角色时,我会遇到这个错误,在CreateCharHandler中它会发送“saveToDb(false);”但是当我使用我手动创建的另一个角色命名时,我可以saveToDb(true);没有错误。请帮忙,为什么会这样 SaveToDb方法 第3514行是: ResultSet rs = ps.getGeneratedKeys(); 提前谢谢 您的SQLException明确指出: 您需要指定语句。将生成的\u键返回到 Statement.executeUpdate()或

当我在游戏中创建一个新角色时,我会遇到这个错误,在CreateCharHandler中它会发送“saveToDb(false);”但是当我使用我手动创建的另一个角色命名时,我可以saveToDb(true);没有错误。请帮忙,为什么会这样

SaveToDb方法

第3514行是:

ResultSet rs = ps.getGeneratedKeys();

提前谢谢

您的
SQLException
明确指出:

您需要指定
语句。将生成的\u键返回到
Statement.executeUpdate()
Connection.prepareStatement()

这可以通过以下方式实现(在
Connection.prepareStatement()
method上添加一个附加值):

语句。RETURN\u GENERATED\u KEYS
是此处的键

希望这有帮助

PS:


@Charlie berg,因为你喜欢偷懒,我修改了代码的第13行,加入了
语句

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);
另外,
语句
类属于包
java.sql
(确保正确导入)。:-)

如果没有指示应自动生成列 可用于检索,将调用Statement.getGeneratedKeys 返回空结果集

您应该明确地告诉JDBC您想要生成的密钥

像这样:

Statement stmt = conn.createStatement();
stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);


然后您可以使用
getGeneratedKeys()

嗨,Charlie,因为外部链接往往会衰减和消失(尤其是pastebin),所以最好在问题中包含您想要直接显示的代码和图片。您可以通过单击评论框上方的“编辑”来执行此操作。谢谢您的帮助!但不幸的是,我不明白——facepalm——你能告诉我我的密码需要修改什么吗?我保证我会学习:D。Tyty@Charlieberg,把第13行改成这个(参见我刚才如何添加
语句。将生成的密钥返回到
con.prepareStatement
)。
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS);
conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);