我正在开发一个简单的java项目,该项目使用JavaDB和MySQL来介绍数据库的使用。我试图编写一种方法来更新数据库中游戏的分数。
public void setTeamsScore(int matchNumber, int hScore, int vScore) throws SQLException
{
Statement stmt = connection.createStatement();
String sqlStatement = "UPDATE Matches " +
"SET HomeTeamScore = " + hScore +
" WHERE " +
"MatchNumber = " + matchNumber;
stmt.executeUpdate(sqlStatement);
sqlStatement = "UPDATE Matches " +
"SET VisitorTeamScore = " + vScore +
" WHERE " +
"MatchNumber = " + matchNumber;
stmt.executeUpdate(sqlStatement);
}
我在运行时没有错误,当我检查update语句的返回值时,它返回1(如果我理解正确,则意味着在数据库中更新了1行)。但是,数据库根本没有更新,并保持与以前相同的值。
起初,我认为自动提交可能不起作用,所以我尝试关闭自动提交并使用connection.comit(),但这并没有解决问题。
非常感谢任何指导。
答案 0 :(得分:1)
您需要同时拨打stmt.execute(sql)
和stmt.executeUpdate(sql)
首先检查您的查询是否返回了真实的结果集。
Boolean ret = stmt.execute(sqlStatement);
然后更新记录
int rows = stmt.executeUpdate(sqlStatement);
System.out.println("Rows impacted : " + rows );
如果数据仍未更新,请检查您的连接对象。
答案 1 :(得分:0)
首先,您必须检查Auto-commit设置为true还是false。 如果为false,则必须在SQL执行之后提交连接。
int rows = stmt.executeUpdate(sqlStatement);
System.out.println("Rows impacted : " + rows );
stmt.commit();
stmt.close();