3

Android で sqlite データベースのサイズを制限しようとしています。これが私がそれを達成しようとしている方法です、

  • sqlite db オブジェクトで setMaximumSize() を呼び出す
  • mDb.replaceOrThrow() を try-catch ブロック内に配置して、サイズがいっぱいになったときに SQLiteFullException がスローされるようにします。
  • SQLiteFullException をキャッチし、データベース内のすべてのレコードを削除します。(キャッシュにデータベースを使用しているため)

これは私が観察しているものです、

  • いくつかの挿入が成功した後、「コミットできません。アクティブなトランザクションがありません」というエラー メッセージとともに SQLiteException が発生します。データベースの設定サイズが大きいほど、失敗する前の成功したトランザクションの数が多くなります。
  • データベースの最大サイズを小さすぎてテーブルを作成できない場合、SQLiteFullException が発生するため、テーブル作成クエリで execSQL() を呼び出すと、SQLiteFullException がスローされます。

私の質問は、挿入/置換中に SQLiteFullException が発生しないのはなぜですか? 私がしようとしていることを達成する正しい方法は何ですか?

4

0 に答える 0