私のアプリケーションにはリストビューがあります。SQLiteDatabase からクエリを使用してデータを取得します。データベースからデータを取得すると、次のエラーが発生します。
20行目から21行目に行くと発生します。
regel 50にcursor.deactivate()とcursor.close()を配置しようとしましたが、結果はありませんでした。このエラーが発生する理由と解決方法を知っている人はいますか? ありがとう :)
私のアプリケーションにはリストビューがあります。SQLiteDatabase からクエリを使用してデータを取得します。データベースからデータを取得すると、次のエラーが発生します。
20行目から21行目に行くと発生します。
regel 50にcursor.deactivate()とcursor.close()を配置しようとしましたが、結果はありませんでした。このエラーが発生する理由と解決方法を知っている人はいますか? ありがとう :)
データベースの前にカーソルを閉じる必要があります。コードを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 を実行している間は、シーケンスを閉じることが非常に重要です。詳細については、このリンクを参照してください
データベースを閉じる前に必ず、cursor.close() を呼び出してカーソルを閉じることを忘れないでください。これで問題が解決するはずです。
を使用してアクティビティにカーソルのライフサイクルを管理させれstartManagingCursor(c)
ば問題ありません。