好吧,我需要在服务器模式下创建hsqldb并从另一个客户端连接到此服务器(例如来自runManagerSwing.bat)。 这是我的代码:
public static Server server = new Server();
public static void main(String[] args) throws IOException, ServerAcl.AclFormatException, SQLException {
HsqlProperties p = new HsqlProperties();
p.setProperty("server.database.0", "file:./db/myHsqlDb");
p.setProperty("server.dbname.0", "idt_simulatordb");
p.setProperty("server.port", "9001");
server.setProperties(p);
server.setSilent(false);
server.setTrace(true);
server.start();
(1) Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost:9001/idt_simulatordb", "sa", "");
Statement st = conn.createStatement();
String expression1 = "DROP SCHEMA IF EXISTS simulators CASCADE;\n";
String expression2 = "CREATE SCHEMA SIMULATORS AUTHORIZATION SA;";
String expression3 = "CREATE TABLE SIMULATORS.dirtyhack();";
String expression4 = "DROP SCHEMA IF EXISTS myschema CASCADE;\n";
String expression5 = "CREATE SCHEMA myschema AUTHORIZATION SA;";
st.executeUpdate(expression1);
st.executeUpdate(expression2);
st.executeUpdate(expression3);
st.executeUpdate(expression4);
st.executeUpdate(expression5);
st.close();
conn.close();
(2)server.shutdown();
}
要检查我的服务器是否正常,我添加第(1)行。这真的很好。但我想从另一个工具连接。为此,我在(2)之前放置了断点并启动客户端runManagerSwing.bat。 客户端succsessfully找到服务器但暂停。如果我在第(1)行和第(2)行之间做了几步,有时它会被唤醒。
P.S。对不起我的英文
答案 0 :(得分:0)
您的程序使用server.start()从单独的线程启动服务器。这是在执行server.start()之后可以连接到它的方法。如果它是同一个线程,则标记为(1)的代码将不会执行。
如果删除末尾的server.shutdown()行并且不放置断点,则可以从DatabaseManagerSwing连接。如果要关闭服务器,请使用DatabaseManagerSwing并执行SQL语句“SHUTDOWN”。
在IDE中使用断点时,它也可能会暂停其他线程的执行。
无法自动删除数据库文件。下一个版本2.2.6将有一个静态mathod作为删除一组数据库文件的实用程序。