关闭derby网络服务器不会删除db.lck

时间:2011-05-18 09:30:40

标签: java database derby

我正在尝试使用默认端口从我的Java应用程序启动网络服务器模式下的Derby。服务器启动成功。现在我尝试连接到服务器上名为“myDB”的数据库。建立连接并成功创建db.lck。然后,我做了几个事务,提交并优雅地关闭连接。我看到db.lck仍在那里。然后我关闭了网络服务器。我希望在所有这些操作结束时删除db.lck文件。但它仍然存在。 (PS:操作系统是Windows)

以下是代码:

1)启动服务器:

System.setProperty("derby.system.home", "C:\\SI\\testDerby");
System.setProperty("derby.drda.traceDirectory", "C:\\SI\\trace");
System.setProperty("derby.drda.traceAll", "true");
System.setProperty("derby.drda.logConnections", "true");
System.setProperty("derby.connection.requireAuthentication", "false");

serverHandle = new NetworkServerControl();
// Write server console messages to system output
serverHandle.start(new PrintWriter(System.out));

2)连接到DB

final String PORT = 1527;
String driver = "org.apache.derby.jdbc.ClientDriver";
String dbName = "myDB";
String connectionURL = "jdbc:derby:" + "//localhost:" 
            + PORT  + "/" + dbName + ";create=true";
Class.forName(driver).newInstance();
Connection conn = DriverManager.getConnection(connectionURL);
Statement stmt = conn.createStatement();
boolean success = stmt.execute("DROP TABLE USERS");
PreparedStatement statement = conn.prepareStatement("CREATE TABLE USERS (id BIGINT not null, name VARCHAR(20))");
success = statement.execute();
conn.commit();
conn.close();

3)关闭服务器

serverHandle.shutdown();

任何人都可以帮我解决这个问题吗?当我关闭连接或关闭数据库时,我需要删除db.lck文件。我想我错过了什么。提前谢谢。

1 个答案:

答案 0 :(得分:3)

关闭服务器可能没有关闭数据库;在关闭服务器之前尝试执行显式数据库关闭,如下所述:http://db.apache.org/derby/docs/10.8/devguide/tdevdvlp40464.html#tdevdvlp40464