0

MySQL テーブルからすべてのデータを削除し、新しいデータを書き込む Java 関数を作成しています。以下は私の機能です。

public void editsnack(ArrayList snames)
{
System.out.println("Snack Names "+snames);
Statement _snacksListStmt = null;
Statement _deleteTableDtataStmt = null;
try
{
    _snacksListStmt = fCon.createStatement();
    _deleteTableDtataStmt = fCon.createStatement();
    int i=0;

        for(i=0;i<snames.size();i++)
        {
        String _name = snames.get(i).toString();
        String _deleteTableData ="TRUNCATE TABLE snacklist";
        _deleteTableDtataStmt.executeUpdate(_deleteTableData);
        String _snackListQuery ="insert into snacklist(snackName)values('"+_name+"')";
        System.out.println("Query ");
        System.out.println(_snackListQuery);
        _snacksListStmt.executeUpdate(_snackListQuery);
        }
}

データを正常に削除した後、これらの行は

System.out.println("Query ");
System.out.println(_snackListQuery);

正しい値を出力していますが、値がテーブルに保存されていません。

どうすればこの問題を解決できますか?

4

4 に答える 4

0

接続が autoCommit に設定されているかどうかに応じてfCon.commit()、トランザクションをコミットするために呼び出す必要があります。また、完了したら、常にステートメントを閉じる必要があります。

于 2013-08-02T09:44:42.690 に答える
0

問題は、for ループの削除クエリです。各挿入後にデータを切り捨てています。現在のロジックでは、最後の挿入のみがテーブルに残り、他のすべてのデータは切り捨てられます。削除クエリを for ループの外に移動して、次のことを試してください。

     String _deleteTableData ="TRUNCATE TABLE snacklist";
    _deleteTableDtataStmt.executeUpdate(_deleteTableData);


  for(i=0;i<snames.size();i++)
    {
    String _name = snames.get(i).toString();
    String _snackListQuery ="insert into snacklist(snackName)values('"+_name+"')";
    System.out.println("Query ");
    System.out.println(_snackListQuery);
    _snacksListStmt.executeUpdate(_snackListQuery);
    }
于 2013-08-02T09:48:00.440 に答える