【发布时间】:2010-11-01 03:52:42
【问题描述】:
进程中的 HSQLDB 数据库不应被其他人打开,即使是基于文件的存储也是如此。
文档提示这是可能的:Server Modes、Advanced Topics,但我还没有找到如何激活此行为的 URL。
有没有人这样做以便他们可以分享如何做?
【问题讨论】:
进程中的 HSQLDB 数据库不应被其他人打开,即使是基于文件的存储也是如此。
文档提示这是可能的:Server Modes、Advanced Topics,但我还没有找到如何激活此行为的 URL。
有没有人这样做以便他们可以分享如何做?
【问题讨论】:
我有在应用程序之外以服务器模式启动 HQLDB 并将多个应用程序连接到数据库的经验。
如doc 中所述,该过程非常简单。
【讨论】:
以下对我有用:
从您的代码启动服务器,该代码显示在 HSQLDB 源代码中的 org.hsqldb.test.TestBase 代码中。比如:
Server server = new Server();
server.setDatabaseName(0, "test");
server.setDatabasePath(0, "file:/path/to/db");
server.start();
在同一个 JVM 中,像在普通(非服务器)程序中一样打开到同一个数据库的连接,例如:
conn = DriverManager.getConnection("jdbc:hsqldb:file:/path/to/db");
然后使用 conn 执行你想要的任何 SQL。
在我自己的实验中,这似乎可行,并且适用于内存和文件数据库。
当然,其他 JVM 需要使用 TCP 连接到服务器。尝试直接在另一个 JVM 中打开数据库文件会导致数据库被锁定的常见错误。
【讨论】: