非常简单,以及记录如何在服务器模式下运行H2。只需代码:
Server.createTcpServer().start();
很简单。但我无法找到答案:
有什么想法吗?
答案 0 :(得分:2)
如Connecting to a Database using JDBC中所述,数据库文件名可以在数据库URL中指定,例如
jdbc:h2:tcp://localhost/~/src/java/MyDatabase;IFEXISTS=TRUE
数据将存储在MyDatabase,h2.db
文件中。
有关指定;IFEXISTS=TRUE
的效果,请参阅Opening a Database Only if it Already Exists。将网址与这些嵌入模式examples进行比较。
附录:您将在何处提供此网址?
服务器启动后,您可以按照建议here将URL传递到首选客户端,或通过java.sql.Connection
以编程方式将其连接到正在运行的数据库,如图here所示。
答案 1 :(得分:2)
过了一天又转到德比,我找到了解决这个问题的方法。我不知道为什么这不是由H2文件处理的,但是确定 首先。对我来说,连接URL和DB-Files的物理位置是不同的东西。而且我不喜欢这个文件的东西,因为我想在运行中看看db。
所以,这是什么
private Server startDb() {
Server retVal = null;
try {
final String userDir = System.getProperty("user.dir");
// System.setProperty("h2.baseDir", userDir + "/data/jumpstart");
retVal = Server.createTcpServer("-baseDir", userDir + "/data/jumpstart");
retVal.start();
Connection conn = null;
try {
Class.forName("org.h2.Driver");
conn = DriverManager.getConnection("jdbc:h2:tcp://localhost/jumpstart", "sa", "sa");
} finally {
if (conn != null)
conn.close();
}
} catch (final Exception ex) {
}
return retVal;
}
正如您在此处所见,数据库的文件将存储在directoy / data / jumpstart中。
JDBC connect的URL隐藏了这个细节。它只对名称为jumpstart的DB进行寻址。
是的。
HTH
安德烈亚斯