1

アプリケーションを実行すると、アプリケーションでデータベースを使用しています。次のエラーが表示されます

android.database.sqlite.DatabaseObjectNotClosedException: アプリケーションは、ここで開かれたカーソルまたはデータベース オブジェクトを閉じませんでした

このエラーの解決方法を教えてください

4

4 に答える 4

0

in your mainclass call this method

db.close();

add this method to your helperclass

@Override
    public synchronized void close() {
        if(db != null){
            db.close();
        super.close();
        }   
    }

More information about Andorid Sqlite Database

于 2012-10-11T07:36:28.843 に答える
0

使用後にデータベースを閉じていません。したがって、以下のステートメントを使用してデータベースを閉じる必要があります。

db.close(); 
于 2012-10-11T07:31:19.380 に答える
0

トランザクションを実行した後は、常にカーソルと Db を閉じる必要があります。
また、例外が発生した場合にも忘れずに閉じてください。

SQLite Helper クラスを拡張しているクラスで、次のように実装する必要があります。

@Override
    public synchronized void close() {
        if(db != null){
            db.close();
        super.close();
        }   
    }
于 2012-10-11T07:31:51.277 に答える
0

データベースをシングルトンにすることで、データベースの開閉を完全に回避できます。これは、Android で推奨されるアプローチです。

複数のスレッドを介してデータベースにアクセスする場合、問題はさらに悪化します。

単一の開いているデータベースを維持する方法の例については、この質問を確認してくださいAndroid SQLite DB いつ閉じるか

これで問題は解決しますが、これを処理するローダー API を使用していない限り、完了したらカーソルを閉じる必要があります。

于 2012-10-11T08:02:36.657 に答える