我需要使用一些 Java 代码处理来自 SQLite 数据库的数据。问题在于数据库是从外部服务中检索的,因此它只能作为 InputStream
使用。
我真的很想避免在开始处理数据之前将数据库保存到文件系统,但我没有找到这样做的方法。
我目前正在使用 SqlJet ,因为它提供了创建内存数据库的选项。但是,似乎没有办法将 InputStream
/字节数组转换为数据库。
没有什么强制我使用 SqlJet , 如果它提供所需的功能,它可以很容易地被任何其他工具替换。
最佳答案
这样是不行的。也许 Java 支持某种机制来创建某种形式的虚拟文件,该文件作为某种物理文件在本地(对当前进程)呈现。
我可以想出一种方法来解决该限制,但在您的上下文中这可能不可行或 Not Acceptable 。您可以更改服务以返回数据库的转储并将其加载到接收方的内存数据库中:
这是生成转储的一种方法:
# 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;
关于java - 从字节数组在内存数据库中创建 SQLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12111386/