0

データベースからブロブを取得したい。このエラーが発生します。データベースを初めて使用しますが、これはどういう意味ですか?

07-13 22:21:10.928: E/CursorWindow(13302): 拡大する必要があります: mSize = 1048576、サイズ = 3279360、freeSpace() = 1048491、numRows = 1

私はちょうど1MBを持っているようです。これはデータベースの制限ですか、それとも現在の完全なアプリは 1 MB の空きメモリに制限されていますか?

ブロブをデータベースに挿入する際に問題はありませんでした。その後、データベースなどを閉じました...誰かが私が見ることができる場所をいくつか教えてくれたらうれしいです。

よろしくお願いします、

パトリック

4

3 に答える 3

1

CursorBLOB データに適用される 1 MB の制限があります。制限は に適用されるためCursor、データを挿入することはなく、アクセスしようとしているだけです。

一般に、これほど大きなデータ チャンクをデータベースに格納することはお勧めできません。代わりに、その大きなデータを内部または外部ストレージのファイルに保存し、代わりにファイル パスまたは URI をデータベース フィールドに保存する必要があります。

于 2012-07-13T20:37:37.720 に答える
1

SQLite データベース内に大きなファイルを保存することは、悪い習慣です。Uri代わりに、ファイルを指すaを保存してください。

于 2012-07-13T20:38:59.970 に答える
0

これは、保存しようとしている変数が大きすぎてカーソルが処理できないためです。

この私のログの抜粋を例にとると

07-08 10:39:51.324: W/CursorWindow(9207): Window is full: requested allocation 1249663 bytes, free space 398939 bytes, window size 2097152 bytes

Android OS 自体がこのアプリのみを実行していることを保証できないため、分離されたメソッドを使用して blob または長い文字列を 1 つずつ呼び出すことをお勧めします。これは、他のアプリが大量のメモリを消費する可能性があるためです。

于 2013-07-08T02:52:19.990 に答える