Java SQL更新查询不起作用

时间:2017-11-05 03:42:12

标签: java mysql javadb

我正在开发一个简单的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(),但这并没有解决问题。

非常感谢任何指导。

2 个答案:

答案 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();