2017-11-05 26 views
0

動作していません。私は、データベースのゲームのスコアを更新するためのメソッドを記述しようとしています。JavaのSQL更新クエリは、私はデータベースの使用を導入しJavaDBとMySQLを使用して、単純なJavaプロジェクトに取り組んでいます

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

はあなたのクエリが真の結果セットを返すかどう両方stmt.execute(sql)stmt.executeUpdate(sql)

最初のチェックを呼び出す必要があります。データがまだあなたの接続オブジェクトをチェックし、更新されていない場合

Boolean ret = stmt.execute(sqlStatement);

はその後、レコード

int rows = stmt.executeUpdate(sqlStatement); System.out.println("Rows impacted : " + rows);

を更新します。

+0

こんにちは、お返事に感謝。私はあなたが言ったことをしようとしたとのデータがまだ更新されていない...コンソールは、まだ「影響を受けた行:1」と言うが、何も変わりません。私は 'ブールRET =でstmt.execute(のSQLStatement)を使用する場合 – Gabriel

+0

...私は接続をチェックしようとしているが、私は何の問題もなく同じクラスの他のメソッドに同じ接続を使用しています;'、それは 'false'を返します。これは何を意味するのでしょうか? – Gabriel

関連する問題