我在写一些使用Java DB(即Apache Derby)作为数据库的Java应用程序。我用下面的方法来连接数据库:如何检查另一个Derby实例是否已经启动?
Connection getConnection() throws SQLException {
EmbeddedDataSource ds = new EmbeddedDataSource();
ds.setDatabaseName(dbUri);
ds.setPassword(password);
ds.setUser(username);
Connection conn = ds.getConnection();
conn.setSchema(schema);
return conn;
}
这工作不错,但有时我得到以下异常:
java.sql.SQLException: Another instance of Derby may have already booted the database
发生这种情况时,我跑我的应用程序,并在同一时间的SQuirreL SQL客户端已连接到我的数据库。所以一切都按预期工作,但我希望能够在我的getConnection()
方法中检查这一点。换句话说,我想检查是否有任何会话向我的数据库打开,例如关闭它们,抛出我自己的异常或显示错误对话框。我不知道该怎么做。
THX