[英]Unable to open the database file
private void SetConnection()
{
string a = string.Format(@"Data Source={0};Version=3;New=False;Compress=True;", "~/lodeDb.db");
sql_con = new SQLiteConnection(a);
}
private void ExecuteQuery(string txtQuery)
{
SetConnection();
sql_con.Open();
sql_cmd = sql_con.CreateCommand();
sql_cmd.CommandText = txtQuery;
sql_cmd.ExecuteNonQuery();
sql_con.Close();
}
當我運行sql_cmd.ExecuteNonQuery
時,Sqlexception 是:
“無法打開數據庫文件”。
我主機上的“lodeDb.db”文件,我認為數據源有誤。 如果是在線托管的數據庫文件,如何設置連接的datasource? 權限文件在這里沒有問題。
嘗試打開網絡驅動器上的數據庫(路徑以“\\\\ myServer \\ myDbFile ...”開頭)時,我得到了同樣的異常,我通過將true
到連接構造函數中的parseViaFramework
參數來解決它。
sql_con = new SQLiteConnection(a, true);
這是一個連接字符串問題,
SQL Lite連接字符串格式
基礎:
Data Source=filename;Version=3;
使用UTF16:
Data Source=filename;Version=3;UseUTF16Encoding=True;
使用密碼:
Data Source=filename;Version=3;Password=myPassword;
使用pre 3.3x數據庫格式:
Data Source=filename;Version=3;Legacy Format=True;
使用連接池:
Data Source=filename;Version=3;Pooling=False;Max Pool Size=100;
只讀連接:
Data Source=filename;Version=3;Read Only=True;
編輯1:
連接到遠程數據庫不同,您必須檢查以下內容。
添加“Journal Mode = Off”時我的問題解決了。 在連接字符串中
禁用日志文件此文件完全禁用回滾日志。
數據源= c:\\ mydb.db;版本= 3;日志模式=關閉;
我遇到了同樣的問題並使用查詢字符串修復它:@“Data Source = C:\\ ProgramData \\ proj \\ lodeDb.db; Version = 3; FailIfMissing = False”
通過這個,我的意思是,當我使用完整路徑的DB文件的位置,它工作,當我使用“〜/ lodeDb.db”它不起作用
這個解決方案對我有用:
var index = dialog.FileName.IndexOf('\\'); example: "C:\TEST.DB"
if (0 != index) {
Models.Context.CreateDatabase(dialog.FileName);
OpenProject(dialog.FileName);
}
else //example: "\\Ceng\Share\MyPC"
{
var path = dialog.FileName.Replace('\\', '/');
Models.Context.CreateDatabase(path);
OpenProject(path);
}
我通過設置 System.Data.SQLite dll=>properties=>Copy local=>"True" 解決了這個問題
我在共享托管服務器上遇到了同樣的問題,我的 C# 代碼能夠從 SQLIte db 文件中讀取數據。 但是在添加/更新數據時拋出錯誤“無法打開數據庫”
我嘗試了 stackoverflow 上建議的許多選項但是在參考https://stackoverflow.com/a/17780808/2021073和https://www.sqlite.org/pragma.html#pragma_journal_mode 之后我嘗試添加journal mode=Off; 到連接字符串
它對我有用
示例代碼
SQLiteConnection connection = new SQLiteConnection("Data Source=G:\dbfolder\sqlite3.db;Version=3;Mode=ReadWrite;journal mode=Off;", true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.