我正在嘗試根據我的作業目錄在父目錄中創建一個資料庫檔案,到目前為止這是我所做的
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。
你知道我怎樣才能做到這一點嗎?
uj5u.com熱心網友回復:
創建db檔案夾并執行以下操作:
DriverManager.getConnection("jdbc:sqlite:../db/" dbName)
或者像這樣直接創建一個資料庫:
DriverManager.getConnection("jdbc:sqlite:" dbName)
試試這個鏈接。
uj5u.com熱心網友回復:
您可以使用 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");
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/350187.html
上一篇:BootstrapAccordion/CollapseUncaughtTypeError:非法呼叫
下一篇:使用PHP將記錄插入SQLite
