19


私はこれについて多くのことを読んだり、閲覧したり、検索したりしてきました。スタックオーバーフローを何度も行き来し、問題を可能な限り絞り込むことができました。

私が理解していない唯一のことは、インメモリ SQLite データベースを完全に使用する方法です。

これが私の状況です-アプリケーションのロード中に復号化する暗号化されたSQLiteデータベースがあります(この部分は確実に機能します)。データベースと対話する私のクラスは、プレーンなデータベースで確実に機能します。簡単に言えば、電話の内部メモリから読み込まれるプレーンな DB ではすべてが完璧ですが、復号化された DB をメモリに保存する方法や場所がわからないため、通常の DB として解釈されます。

null名前の代わりに入れて、パスの代わりにsuper(context, null, null, 3);使用する必要があると思いますが、まだ完全には理解していません。テーブルが見つからないと表示されますが、データベースが正常であることは確かです。:memory:SQLiteDatabase.openDatabase()android_metadata

私がこれについて明確だったことを願っています:)

4

3 に答える 3

31

が の場合、 SQLiteOpenHelper()nameはメモリ内データベースを作成しますnull。を呼び出すと作成されることに注意してくださいgetWritableDatabase()

次に、データを挿入する必要があります。

于 2012-07-25T20:08:05.713 に答える
12

あなた (またはフレームワーク)は、次のいずれかを使用してデータベースを作成します。

  • SQLiteDatabase.create()
  • SQLiteDatabase.openDatabase()
  • SQLiteDatabase.openOrCreateDatabase()

最初のオプションはメモリのみのデータベースを作成する唯一の方法であり、他の 2 つはデータベース ファイルを開くか作成する方法です。

したがって、 を使用してasSQLiteOpenHelper()を渡すと、フレームワークは を呼び出すため、メモリ内にのみ存在するデータベースが取得されます (が呼び出されると終了します)。他のダイレクト メソッドも呼び出す必要はありません。代わりに、またはヘルパーから呼び出します。namenullSQLiteDatabase.create(null)close()getReadableDatabase()getWritableDatabase()

于 2012-07-25T20:37:54.593 に答える