Java 以编程方式启动H2数据库

Java 以编程方式启动H2数据库,java,jdbc,h2,Java,Jdbc,H2,我正在用Java编写一个服务器客户端应用程序,我需要在服务器端实现一个本地数据库,我决定使用H2数据库引擎 还有一点需要补充的是,我使用TCP连接来启动和运行数据库。 这是我到目前为止总结的: Class.forName("org.h2.Driver"); Server server = Server.createTcpServer(DB_PATH).start(); Connection currentConn = DriverManager.getConnection(DB_PATH,

我正在用Java编写一个服务器客户端应用程序,我需要在服务器端实现一个本地数据库,我决定使用H2数据库引擎

还有一点需要补充的是,我使用TCP连接来启动和运行数据库。 这是我到目前为止总结的:

Class.forName("org.h2.Driver");  
Server server = Server.createTcpServer(DB_PATH).start();

Connection currentConn = DriverManager.getConnection(DB_PATH, DB_USER, DB_PASSWORD);   
其中连接字符串为jdbc:h2:tcp://localhost/~/测试

该段代码返回时有一个异常:

Feature not supported: "jdbc:h2:tcp://localhost/~/test" [50100-176]

我跟着做了。

像这样的事情应该行得通

Server server = null;
            try {
                server = Server.createTcpServer("-tcpAllowOthers").start();
                Class.forName("org.h2.Driver");
                Connection conn = DriverManager.
                    getConnection("jdbc:h2:tcp://localhost/~/stackoverflow", "sa", "");
                System.out.println("Connection Established: "
                        + conn.getMetaData().getDatabaseProductName() + "/" + conn.getCatalog());
             
            } catch (Exception e) {
                e.printStackTrace();
            }
        
并建立输出连接:H2/STACKOVERFLOW


这已经用h2-1.4.184进行了测试,这是我的简单h2 DBManager-只需将其文件名命名为DBManager.java,并可以随意重用它:

import java.sql.SQLException;

import org.h2.tools.Server;

public class DBManager {

    private static void startDB() throws SQLException {
        Server.createTcpServer("-tcpPort", "9092", "-tcpAllowOthers").start();

    }

    private static void stopDB() throws SQLException {
        Server.shutdownTcpServer("tcp://localhost:9092", "", true, true);
    }

    public static void main(String[] args) {

        try {
            Class.forName("org.h2.Driver");

            if (args.length > 0) {
                if (args[0].trim().equalsIgnoreCase("start")) {
                    startDB();
                }

                if (args[0].trim().equalsIgnoreCase("stop")) {
                    stopDB();
                }
            } else {
                System.err
                        .println("Please provide one of following arguments: \n\t\tstart\n\t\tstop");
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

我可以更轻松地接受默认设置:

      Server server =  Server.createTcpServer().start();

遗憾的是,您链接的文章不再有效: