在父目录中创建数据库

Create database in parent directory

我正在尝试根据我的工作目录在父目录中创建一个数据库文件,到目前为止,这是我所做的

public void createNewDatabase(String dbName) {
    
    try (Connection conn = DriverManager.getConnection("jdbc:sqlite:..db/"+dbName)) {
        if (conn != null) {
            DatabaseMetaData meta = conn.getMetaData();
            System.out.println("The driver name is " + meta.getDriverName());
            System.out.println("A new database has been created.");
        }

    } catch (SQLException e) {
        System.out.println(e.getMessage());
    }       
}

问题是,正如您在此处看到的那样 try (Connection conn = DriverManager.getConnection("jdbc:sqlite:..db/"+dbName)) DriverManager 正在尝试访问不存在的目录 ../db。

你知道我怎样才能做到吗?

您可以使用 NIO 路径来验证 SQLite 数据库连接的路径。请注意,toRealPath() 应用于父目录以确保父目录存在,然后再解析父目录内数据库的绝对路径名:

Path dbPath = Path.of("../db/yourdb");
String dbURL = "jdbc:sqlite:"+dbPath.getParent().toRealPath().resolve(dbPath.getFileName());
System.out.println("dbURL="+dbURL);

try(Connection conn = DriverManager.getConnection(dbURL)) {
...

或作为一个班轮:

String dbURL = "jdbc:sqlite:"+Path.of("../db").toRealPath().resolve("dbName");