Android で sqlite データベースのサイズを制限しようとしています。これが私がそれを達成しようとしている方法です、
- sqlite db オブジェクトで setMaximumSize() を呼び出す
- mDb.replaceOrThrow() を try-catch ブロック内に配置して、サイズがいっぱいになったときに SQLiteFullException がスローされるようにします。
- SQLiteFullException をキャッチし、データベース内のすべてのレコードを削除します。(キャッシュにデータベースを使用しているため)
これは私が観察しているものです、
- いくつかの挿入が成功した後、「コミットできません。アクティブなトランザクションがありません」というエラー メッセージとともに SQLiteException が発生します。データベースの設定サイズが大きいほど、失敗する前の成功したトランザクションの数が多くなります。
- データベースの最大サイズを小さすぎてテーブルを作成できない場合、SQLiteFullException が発生するため、テーブル作成クエリで execSQL() を呼び出すと、SQLiteFullException がスローされます。
私の質問は、挿入/置換中に SQLiteFullException が発生しないのはなぜですか? 私がしようとしていることを達成する正しい方法は何ですか?