5

SQLite をロードする方法はすべて、文字列を使用して名前付きファイルからロードする必要があるようです。SQLite データベースをメモリからロードしたいと思います。

データベースはすでにメモリにロードされています。

4

2 に答える 2

11

特別なファイル名を使用し、:memory:

sqlite3_open(":memory:", &db);

libsqliteSQLite ドキュメントで指摘されているように、定義せず にコンパイルされている必要があります。SQLITE_OMIT_MEMORYDB

SQLITE_OMIT_MEMORYDB

":memory:"これが定義されている場合、ライブラリは特別なデータベース名(通常はメモリ内データベースの作成に使用される) を考慮しません。が、、またはに":memory:"渡されると、この名前のファイルが開かれるか作成されます。sqlite3_open()sqlite3_open16()sqlite3_open_v2()

ただし、すでにメモリに完全にロードされているデータベースを読み取りたい場合は、より多くの作業が必要になります。カスタム VFS レイヤーを実装してメモリ ファイルを操作し、それを SQLite コンテキストに登録する必要があります。

見る:

私はそれを自分で実装していないので、新しい VFS レイヤー全体を実装する必要があるのか​​ 、それともデフォルトのものでいくつかの機能を置き換えることができるのかを確実に判断することはできません (後者はありそうにありません)。

于 2008-11-10T10:35:20.703 に答える
1

にmemvfsの実装があります

article.gmane.org/gmane.comp.db.sqlite.general/46450

于 2009-05-01T11:16:17.477 に答える