19

私のアプリケーションにはリストビューがあります。SQLiteDatabase からクエリを使用してデータを取得します。データベースからデータを取得すると、次のエラーが発生します。 エラー

20行目から21行目に行くと発生します。 発生する

regel 50にcursor.deactivate()とcursor.close()を配置しようとしましたが、結果はありませんでした。このエラーが発生する理由と解決方法を知っている人はいますか? ありがとう :)

4

4 に答える 4

25

データベースの前にカーソルを閉じる必要があります。コードをtry/catchブロックとブロックに入れfinally、カーソルを閉じてからデータベースを閉じます。

try {
    db = ...
} catch(Exception ex) { 
    // Log the exception's message or whatever you like
} finally {
    try {
      if( cursor != null && !cursor.isClosed())
        cursor.close();
       if( db.isOpen() )
        db.close();
    } catch(Exception ex) {}
}

DB またはコンテンツ プロバイダーで IO を実行している間は、シーケンスを閉じることが非常に重要です。詳細については、このリンクを参照してください

于 2012-05-03T15:27:15.923 に答える
4

データベースを閉じる前に必ず、cursor.close() を呼び出してカーソルを閉じることを忘れないでください。これで問題が解決するはずです。

于 2012-10-11T13:43:37.450 に答える
0

を使用してアクティビティにカーソルのライフサイクルを管理させれstartManagingCursor(c)ば問題ありません。

于 2012-05-03T15:27:57.483 に答える