HSQLDB从另一个客户端的代码连接运行

时间:2011-10-20 03:07:34

标签: java hsqldb

我需要从我的代码创建HSQLDB服务器,运行它并从另一个应用程序连接(对于e.x. by runManagerSwing.bat)

以下是我的代码:

HsqlProperties p = new HsqlProperties();
        p.setProperty("server.database.0", "file:./db/idt_simulatordb");
        p.setProperty("server.dbname.0", "idt_simulatordb");
        p.setProperty("server.port", "9001");
        Server server2 = new Server();
        server2.setProperties(p);
server2.start();
    // I even can connect to my server from the same application
    Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001   /idt_simulatordb", "sa", "");
            Statement st = conn.createStatement();    // statements
            String expression1 = "DROP SCHEMA IF EXISTS simulators CASCADE;\n";
            String expression2 = "CREATE SCHEMA SIMULATORS AUTHORIZATION SA;";
            String expression3 = "CREATE TABLE SIMULATORS.dirtyhack();";
            st.executeUpdate(expression1);    // run the query
            st.executeUpdate(expression2);    // run the query
            st.executeUpdate(expression3);    // run the query
//
            st.close();
            conn.close();



server2.shutdownWithCatalogs(Database.CLOSEMODE_NORMAL);

但是当我在服务器运行后放置断点并尝试从runManagerSwing连接到我的服务器时,我收到了超时错误。

但是如果我从bat-file启动服务器,那么一切都还可以。

我想我必须使用MainInvoker,但我不知道如何传递参数以及如何关闭服务器。

2 个答案:

答案 0 :(得分:0)

您需要在报告的最后一行之后启动服务器

...
server2.setProperties(p);
server2.start();

答案 1 :(得分:0)

是的,这是正常的,因为当您重新达到断点时,您也会挂起数据库,因此无法连接到数据库。

解决方案: 使您的断点挂起仅在其中而不是整个程序中的线程。如果使用intellij,请右键单击断点,然后将suspend选项设置为“ Thread”而不是“ all”