我可以使用H2,HSQLDB或任何其他嵌入式数据库,使用InputStream
而不是文件中的数据库吗?
我打算在Android上使用AssetManager.open()
,这可以在随机访问模式下返回InputStream
。
答案 0 :(得分:3)
H2支持pluggable file system,可让您访问read-only databases in a zip or jar files。但是,AssetManager
目前没有文件系统实现。它应该相对容易实现。最佳起点可能是FileSystemZip和FileObjectZip。
答案 1 :(得分:0)
大多数数据库需要随机访问底层文件,因此InputStream不会这样做。
答案 2 :(得分:0)
AFAIK,H2和HSQLDB在“独立”模式下使用时仅提供基于文件和内存的连接URI。因此,需要一个文件或一些堆内存空间;但你没有给它一个File / InputStream,一切都在连接URI中,例如jdbc:h2:~/test
。
答案 3 :(得分:0)
如果您准备进行一些开发,可以使用HSQLDB,特别是版本1.8.1.x,它的尺寸较小。
检查org.hsqldb.lib.ResourceStreamProvider类并修改它,以便在调用其静态getResourceAsStream方法时使用为文件名db.properties和db.script提供的流。
非常简单,特别是因为db.script和db.properties由文本组成,您可以在程序的其余部分轻松生成文本。