2017-01-21 16 views
0

データベースをテキストファイルから更新する必要があるJAVAプログラムで作業しています。私は正常にデータを挿入し、更新しました。しかし、私はここで問題に直面しています、この方法。クエリはエラーなく実行され、私に応答を与えます。しかし、データベーステーブルは更新されていません。ここでMYSQL JAVAのテーブルにデータを更新しないクエリを挿入する

private void filteData() { 
     System.out.println("filteData"); 
     Statement statementAtenLogInsert = null; 
     Statement statementqCheck = null; 
     Statement statementUpdateProLog = null; 
     Statement statementEnterError = null; 
     ResultSet rs = null; 
     int rcount; 

     //Update successfull attendance_test 
     String attenLogInsertSuccess = "INSERT INTO attendance_log (user_id, check_in, check_out) SELECT user_id, check_in, check_out FROM process_log WHERE flag = 'S'"; 

     try { 
      statementAtenLogInsert = connection.createStatement(); 
      statementAtenLogInsert.execute(attenLogInsertSuccess); 
      int qSuccess = statementAtenLogInsert.executeUpdate(attenLogInsertSuccess); 

      System.out.println("qSuccess " + qSuccess); 

      if(qSuccess > 0){ 

       String deleteProcessLog = "DELETE FROM process_log WHERE flag = 'S'"; 
       statementAtenLogInsert.execute(deleteProcessLog); 

      } 

     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 

attenLogInsertSuccessdeleteProcessLogクエリが動作していません。データベーステーブル側から何も起こっていないことを意味します。しかしqSuccess私に価値を与えてくれます。つまり、attenLogInsertSuccessがトリガーしています。しかし、何もmysql側から起こった。

答えて

2

データベースへの変更をフラッシュするには、接続を閉じる必要があります。

パイプラインのどこかにconnection.close();を追加してみてください。通常、finallyブロックで接続を閉じて、常に閉じていることを確認しますが、呼び出し機能で再利用するために接続を別の場所に定義したようです。

また、接続を閉じる前に文を閉じる必要があります。パターンについてはthis similar answerを参照してください。

+1

これは@gwnpのコメントになります。少なくとも接続を閉じる方法を示すことができます:) –

+0

あなたは正しいです、残念です。それは今より良いはずです。 – gwnp

関連する問題