在父目录中创建数据库
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");
我正在尝试根据我的工作目录在父目录中创建一个数据库文件,到目前为止,这是我所做的
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");