在H2文档中,它表示只有Web服务器支持浏览器连接.这是否意味着我们只能在WebServer模式下通过控制台访问H2数据库,而不是TcpServer?但是,当我在下面进行测试时,结果完全不如预期.
public class TestMem { public static void main(String... args) throws Exception { Class.forName("org.h2.Driver"); Connection conn = DriverManager.getConnection("jdbc:h2:mem:test"); conn.createStatement().execute("create table test(id int)"); Server server = Server.createTcpServer().start();//1.TcpServer // Server server = Server.createWebServer().start();//2.WebServer System.out.println("Server started and connection is open."); System.out.println("URL: jdbc:h2:" + server.getURL() + "/mem:test"); Thread.sleep(5*60*1000); System.out.println("Stopping server and closing the connection"); server.stop(); conn.close(); } }
如果我启动一个TcpServer,我可以通过这个url访问数据库:jdbc:h2:tcp:// localhost:9092/mem:test in console.
//Use TcpServer Server server = Server.createTcpServer().start();
但是当我启动WebServer时,我尝试连接使用jdbc:h2:http:// localhost:8082/mem:test,下面将抛出异常:IO例外:"java.io.IOException:文件名,目录名或者卷标语法不正确"; "http:// localhost:8082/mem:test.h2.db"[90031-172] 90031/90031(帮助).
//Use WebServer Server server = Server.createWebServer().start();
这是我的问题
我们可以在控制台中访问WebServer模式h2 DataBase吗?怎么样?
我是否误解了有关使用服务器部分的H2文档?
Thomas Muell.. 5
该H2控制台工具(使用创建的Server.createWebServer
)是一个Web服务器和一个小型Web应用程序,允许您连接到使用Web浏览器数据库(任何JDBC数据库)(如Firefox,谷歌Chrome,IE浏览器,等等).
该H2 TCP服务器(使用创建的Server.createTcpServer
)是H2 JDBC客户端的服务器.它不是Web服务器,也不是Web应用程序.您无法从Web浏览器连接到此服务器.
如果同时启动控制台工具(Web服务器)和TCP服务器,则可以使用浏览器连接到控制台工具,然后可以在服务器模式下连接到H2数据库.
关于数据库URL:请参阅有关数据库URL的文档.
该H2控制台工具(使用创建的Server.createWebServer
)是一个Web服务器和一个小型Web应用程序,允许您连接到使用Web浏览器数据库(任何JDBC数据库)(如Firefox,谷歌Chrome,IE浏览器,等等).
该H2 TCP服务器(使用创建的Server.createTcpServer
)是H2 JDBC客户端的服务器.它不是Web服务器,也不是Web应用程序.您无法从Web浏览器连接到此服务器.
如果同时启动控制台工具(Web服务器)和TCP服务器,则可以使用浏览器连接到控制台工具,然后可以在服务器模式下连接到H2数据库.
关于数据库URL:请参阅有关数据库URL的文档.