1

無限ループの終わりに ms access データベースへの接続を適切に閉じる他の方法はありますか? レコードがテーブルに挿入された場合、以下のコードでは、挿入された新しい行が表示されないためです。データベースが正常に閉じていないように見えます...なぜこのように動作しているのかわかりません。データベースを手動で閉じたり開いたりすると (バックグラウンドでプログラムを実行したまま)、すべて問題ありません。新しい行がクエリに表示されます。

import java.rmi.RemoteException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Main {

    public static void main(String[] args) throws RemoteException,
            InterruptedException, SQLException {
        while (true) {
            Connection con = DBConnection.getDBConnection();
            System.out.println("Connection OK!");
            Statement s = null;

            try {
                    ResultSet rs = null;
                    con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
                    con.setAutoCommit(true);
                    rs = s.executeQuery("SELECT Tel, Msg, Procesat FROM RcvMsg WHERE Procesat = 'NOK'");

                    while (rs.next()) 
                    {
                        String pn = rs.getString(1);
                        String str = rs.getString(2);
                        //do something
                    }
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                    } finally {
                        s.close();
                        con.close();
                    }   

            Thread.sleep(5000);
        }
    }
}
4

4 に答える 4

0

AutoCommit を false に設定する (つまり、自動コミットを無効にする) 場合は、Connection.commit() を手動で呼び出す必要があります。そうしないと、データベースに永続的に何も残らないことになります。

于 2015-03-18T12:59:04.080 に答える