簡體   English   中英

為什么我的 SQLite 表出現“無法打開數據庫文件”?

[英]Why am I getting "unable to open database file" on my SQLite table?

我在項目的根目錄中添加了一個 SQLite 數據庫,並將其“構建操作”屬性設置為“內容”:

在此處輸入圖片說明

我正在嘗試以這種方式打開數據庫:

using System.Data.SQLite;
. . .
string cs = "Data Source=\\F4FDataSQLite_SingleTable.db;";
using var con = new SQLiteConnection(cs);
con.Open();

...但是在上面的con.Open()行上拋出了異常“無法打開數據庫文件”。

我不想使用數據庫的完整文件路徑 (C:\\Users\\bclay\\source\\repos\\F4F_Core\\F4F_Core\\F4FDataSQLite_SingleTable.db),因為除了我自己之外,這不會是任何人的有效路徑。

我的連接字符串是否有問題導致此錯誤消息?

嘗試這個:

var dbPath = Path.Combine(Environment.CurrentDirectory, "F4FDataSQLite_SingleTable.db");
string cs = $"Data Source={dbPath}";
using var con = new SQLiteConnection(cs);
con.Open();

或這個:

var dbPath = Path.Combine(Environment.CurrentDirectory, "F4F_Core", "F4FDataSQLite_SingleTable.db");
string cs = $"Data Source={dbPath}";
using var con = new SQLiteConnection(cs);
con.Open();

如果您的項目是否在解決方案文件夾中,則路徑可能是這兩者之一

首先,檢查項目中的debug文件夾是否存在

下一個:

    var connectoinString=Path.Combine("Data source=", Environment.CurrentDirectory, "F4FDataSQLite_SingleTable.db")    
  //  or    
    var connectoinString=Path.Combine("Data source=", Application.StartupPath, "F4FDataSQLite_SingleTable.db")

using var con = new SQLiteConnection(connectoinString);
con.Open();

根據 Hesa​​m 的回答,我嘗試了以下操作:

string connStr = Path.Combine("Data source=", Environment.CurrentDirectory, "F4FDataSQLite_SingleTable.db");
using var con = new SQLiteConnection(connStr);
con.Open();

...得到了這個:

“C:\\Users\\bclay\\source\\repos\\F4F_Core\\F4F_Core\\bin\\Debug\\netcoreapp3.1\\F4FDataSQLite_SingleTable.db”部分的 ConnectionString 格式無效,找不到等號

connStr 是:

C:\\Users\\bclay\\source\\repos\\F4F_Core\\F4F_Core\\bin\\Debug\\netcoreapp3.1\\F4FDataSQLite_SingleTable.db

(“數據源=”位不存在)

所以我試過這個:

string connStr = string.Format(@"Data source={0}\F4FDataSQLite_SingleTable.db", Environment.CurrentDirectory);
using var con = new SQLiteConnection(connStr);
con.Open();

...所以 connStr 現在是:

數據源=C:\\Users\\bclay\\source\\repos\\F4F_Core\\F4F_Core\\bin\\Debug\\netcoreapp3.1\\F4FDataSQLite_SingleTable.db

它有效。

奇怪的是,如果我使用“Application.StartupPath”而不是“Environment.CurrentDirectory”,我不得不放棄回擊:

connStr = string.Format(@"Data source={0}F4FDataSQLite_SingleTable.db", Application.StartupPath);

哪個更可取,使用“Application.StartupPath”或“Environment.CurrentDirectory”? IOW,當應用程序在用戶的機器上運行時,哪一個最有可能永遠不會引起問題?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM