我正在使用AWS RDS (特别是mysql),并且使用SQL /J作为GUI工具。我的服务器端代码是用Java编写的,下面是我的代码:
插入代码:
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代码:
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‘将返回。
到现在为止我试过什么?
发布于 2014-11-03 12:35:28
我的问题非常简单和烦人--显然,当我从代码中工作时,我不得不关闭Workbench GUI,它有点有线,可能需要Workbench / AWS团队进行更深入的研究。
总之,在关闭这个界面之后,一切都正常了。
谢谢你的帮助!
发布于 2014-11-03 09:25:30
您有没有在连接上尝试过setAutoCommit(true),以防万一不是呢?
另外,如果您的选择只是为了获得一个新的键,请不要忘记您可以在更新时调用myStatement.getGeneratedKeys()。
发布于 2014-11-03 09:26:10
您应该使用executeQuery()进行选择。executeUpdate()只返回int。它应该会产生编译时错误,您确定代码正在编译而不是运行最后一个工作版本吗?
executeUpdate(String sql)执行给定的语句,该语句可以是INSERT、UPDATE或DELETE语句,也可以是不返回任何内容的SQL语句,例如SQL语句。
因此,请按以下方式更改您的选择代码:
ResultSet returnedFriends = myStatement.executeQuery("SELECT * FROM friends;");https://stackoverflow.com/questions/26711094
复制相似问题