2017-06-05 19 views
1

我試圖連接並從SQLite數據庫表中選擇數據,但它顯示我這個錯誤在con.Open()行:在C#上打開SQLite連接時出錯?

型「System.AccessViolationException」 未處理的異常發生在SQLite.NET.dll

試圖讀取或寫入保護內存。這往往是一個 指示其他內存已損壞

這裏是我的代碼:

SQLiteConnection con = new SQLiteConnection("Data Source = db.sqlite; Version=3;"); 
con.Open(); 

SQLiteCommand command = new SQLiteCommand("Select * from [user] where [email protected] and [email protected]", con); 

command.Parameters.Add("@login", textBox1.Text); 
command.Parameters.Add("@password", textBox2.Text); 

我還添加了參考SQLite的.dll文件。

這個錯誤的原因是什麼?

+0

爲什麼周圍'=在連接字符串中的空間'籤?數據源應該是'「Data Source = db.sqlite」'。你有沒有檢查文件是否存在? – Igor

+0

是該文件存在於項目文件,我還添加了它作爲嵌入的資源,我應該從連接字符串中的空格?我需要該文件在執行代碼時被自動引用。 – User005

回答

4

的問題是,你試圖使嵌入數據庫到您的裝配。這不是一個好主意,因爲該內存是隻讀的。

+0

我檢查了連接字符串,但仍然是相同的錯誤。我正在使用Finisar.SQLite命名空間。至於數據庫,我將.sqlite文件添加到項目文件中,並將構建的選項更改爲「嵌入式資源」。 我將這些dll文件下載到.zip文件中,你能否提供另一個鏈接來下載它們? – User005

+2

嗯,這是你的問題。您不能嵌入數據庫,該內存是隻讀的。 – Henningsson

+0

好吧,我會更改構建選項。我試圖讓數據庫可執行文件與應用程序,以便如果它在不同的計算機上執行,它仍然可以訪問數據庫。在此之前,我使用SQLServer並將其更改爲SQLite。 這會幫助我使數據庫與應用程序一起部署嗎? – User005