首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >执行成功,然后选择不返回新值

执行成功,然后选择不返回新值
EN

Stack Overflow用户
提问于 2014-11-03 09:18:26
回答 3查看 197关注 0票数 0

我正在使用AWS RDS (特别是mysql),并且使用SQL /J作为GUI工具。我的服务器端代码是用Java编写的,下面是我的代码:

插入代码:

代码语言:javascript
复制
try {
    Statement myStatement = insertConnectionObject.createStatement();
    myStatement.executeUpdate("INSERT INTO friends VALUES('buddy', '15', '123');");
    myStatement.close();
} catch(Exception ex) {
    // code for handling exceptions
} finally {
    myStatement.close();
    insertConnectionObject.close();
}

之后,我从同一个表调用select代码:

代码语言:javascript
复制
try {
    Statement myStatement = selectConnectionObject.createStatement();
    ResultSet returnedFriends = myStatement.executeQuery("SELECT * FROM friends;");
    //unfortunately, the returnedFriends will not return the new inserted value 'buddy'
} catch(Exception ex) {
    // code for handling exceptions
} finally {
    myStatement.close();
    insertConnectionObject.

不幸的是,returnedFriends将不会返回新插入的值“好友”。

如果我将单击select /J工具中的“提交任何挂起的数据库更改”按钮,然后运行select语句,新的值'buddy‘将返回。

到现在为止我试过什么?

  1. 对insert和select使用相同的连接对象。
  2. 在insert命令之后和每个select命令之后打开并关闭连接。
  3. 禁用自动提交并尝试手动提交。
  4. 通过代码插入,然后直接从DB中选择。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-11-03 12:35:28

我的问题非常简单和烦人--显然,当我从代码中工作时,我不得不关闭Workbench GUI,它有点有线,可能需要Workbench / AWS团队进行更深入的研究。

总之,在关闭这个界面之后,一切都正常了。

谢谢你的帮助!

票数 0
EN

Stack Overflow用户

发布于 2014-11-03 09:25:30

您有没有在连接上尝试过setAutoCommit(true),以防万一不是呢?

另外,如果您的选择只是为了获得一个新的键,请不要忘记您可以在更新时调用myStatement.getGeneratedKeys()

票数 1
EN

Stack Overflow用户

发布于 2014-11-03 09:26:10

您应该使用executeQuery()进行选择。executeUpdate()只返回int。它应该会产生编译时错误,您确定代码正在编译而不是运行最后一个工作版本吗?

executeUpdate(String sql)执行给定的语句,该语句可以是INSERT、UPDATE或DELETE语句,也可以是不返回任何内容的SQL语句,例如SQL语句。

因此,请按以下方式更改您的选择代码:

代码语言:javascript
复制
ResultSet returnedFriends = myStatement.executeQuery("SELECT * FROM friends;");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26711094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档