我想從mono訪問sqlite數據庫: 數據庫存儲在文件「languages.sqlite」中,幷包含表「spanish-german」 。Linq to SQL with Mono:無法連接到我的sqlite數據庫
- 我安裝了MonoDevelop的數據庫插件
- 我創建了一個數據庫連接 - 與IDE工具
然後測試該連接 - 與IDE工具查詢數據庫。
SELECT * FROM 「西班牙 - 德國」
「hablar | sprechen」
「hacer |瑪沁,囤地」
該表有兩列,一列與西班牙文字和德文翻譯
- 我創建了一個LINQ類 - 用IDE。輸出看起來不錯。創建了數據庫的類和表的另一個類。
現在我需要連接到我的代碼中的數據庫。這應該是相當直接的,但我不能得到它的工作。這裏是我的代碼:
string connectionString = "Data Source=languages.sqlite";
DataContext dataContext = new DataContext (connectionString);
Table<Spanish_German> words = dataContext.GetTable<Spanish_German>();
var query =from word in words select word;
foreach (var word in query)
Console.WriteLine (word.Spanish);
這編譯得很好,但運行時,代碼在最終的打印語句中停止。
System.Data.SqlClient.SqlConnection.Open() 「文件名不明」
顯然,文件名是不正確的。數據庫存儲在文件夾數據庫中。 我嘗試以下的ConnectionStrings:
- 「languages.sqlite」
- 「數據庫/ languages.sqlite」
- 「語言」
- 「數據庫/語言」
- 「數據源=語言.sqlite」
- 「數據源=數據庫/ languages.sqlite」
- 「數據源=語言」
- 「數據源=數據庫/語言」
然後發現,MS有這些字符串和「數據源」自定義格式應該叫「地址」。所以,現在我使用 - 「地址= languages.sqlite」
和我得到一個不同的異常:
Mono.Data.Tds.TdsInternalException已經拋出。服務器關閉了連接。
那是什麼?我該如何解決它?
UPDATE:
我改變了構建選項爲數據庫「內容」,把它複製到輸出目錄。然後我添加了「版本= 3;」到connectionString。最後我改變了dataContext來使用sqLite。
所有這三個變化的程序的作品,如果其中一個被遺漏,它不會。
非常感謝。如果其中一個人會從他的評論中創建一個答案,我會接受它。
String DB_CONNECTION_STRING =「Data Source =。/ MyDictionaryDB.sqlite; Version = 3; New = False; Compress = False;」; //數據庫和EXE位於同一個文件夾中。或嘗試使用:String DB_CONNECTION_STRING =「URI = file:./ MyDictionaryDB.sqlite; Version = 3; New = False; Compress = False;」; – houssam 2014-10-01 21:41:40
但你爲什麼因爲使用Sqlite而得到'SqlClient.SqlConnection'?請參閱http://stackoverflow.com/q/12648217/992406 – houssam 2014-10-01 21:49:56
這將是竊取你的辛苦賺來的代表...發佈它自己並將其標記爲接受:) – Noctis 2014-10-02 08:35:24