3

Java コードを使用して SQLite データベースのデータを処理する必要があります。問題は、データベースが外部サービスから取得されるため、InputStream.

データの処理を開始する前にデータベースをファイル システムに保存することは本当に避けたいのですが、それを行う方法がわかりません。

インメモリデータベースを作成するオプションを提供するため、現在SqlJetを使用しています。InputStreamただし、 / バイト配列をデータベースに変換する方法はないようです。

SqlJetの使用を強制するものは何もありません。必要な機能があれば、他のツールに簡単に置き換えることができます。

4

1 に答える 1

1

そのようにすることはできません。おそらくJavaは、ローカルに(現在のプロセスに)物理ファイルとして提示される何らかの形式の仮想ファイルを作成するための何らかのメカニズムをサポートしています。

制限を回避する1つの方法を考えることができますが、それはあなたのコンテキスト内では実行可能または受け入れられない可能性があります。データベースのダンプを返すようにサービスを変更し、それをレシーバーのメモリ内データベースにロードできます。

ダンプを生成する方法は次のとおりです。

# sqlite3
SQLite version 3.7.11 2012-03-20 11:35:50
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table foo (i text);
sqlite> insert into foo values ('a');
sqlite> insert into foo values ('b');
sqlite> .dump
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE foo (i text);
INSERT INTO foo VALUES('a');
INSERT INTO foo VALUES('b');
COMMIT;
于 2012-08-24T17:09:57.910 に答える