2013-09-25 55 views
0

我有一個應用程序,我想在與應用程序相同的文件夾中創建一個數據庫。我查看了.NET 4.0的SQLite,一切看起來都很好,直到出現異常「無法加載文件或程序集」System.Data.SQLite,Version = 1.0.88.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依賴項之一。試圖加載格式不正確的程序。「 SQLite與控制檯.NET應用程序一起工作。我根本不想使用SQL Server。除了XML文件是否還有其他選擇?爲WPF應用程序創建本地數據庫

+1

[這個問題](http://stackoverflow.com/questions/4839342/sql-server-compact-4-0-vs-sqlite)對於相同的場景有一些很好的指導 – Jonesopolis

+0

你可以嘗試很多東西清潔和重新構建解決方案,重新啓動IDE,有時某些進程使用特定的DLL來結束該進程。這只是一些構建問題,所以不需要遷移到其他東西。 –

回答

0

我發現多了一個解決這個問題。問題出在平臺(x86/x64)上。我獲得了Sqllite v1.0.88的源代碼並打開了VS 2010解決方案文件。我注意到目標是默認混合平臺。我將其更改爲任何CPU並構建了System.Data.SQLite.2010項目。我在我的項目中引用了這個dll,並且我沒有遇到x86/x64平臺的問題。一個DLL爲兩者工作。

4

SQLite是您描述的場景的絕佳選擇。放棄SQLite,因爲你不能正確包含它似乎是錯誤的結論。通過NuGet引用它,你很好。圖書館需要SQLite.Interop.dll,您可能沒有正確包含該圖書館。當您在x86環境下運行時,您可能還會加入類似x64版本的內容(有關詳細信息,請參閱this)。通過NuGet使用它,你應該沒問題。

這裏是快速設置我得到了不到5分鐘的工作中:

  1. 通過的NuGet
  2. 安裝
  3. 創建控制檯應用程序(桌面,.NET V4,任何CPU,調試VS快車2012)
  4. 使用下面的代碼
  5. 工程就像一個魅力!

代碼示例:

string dataSource = "SQLiteDemo.db"; 
SQLiteConnection connection = new SQLiteConnection(); 
connection.ConnectionString = "Data Source=" + dataSource; 
connection.Open(); 
SQLiteCommand command = new SQLiteCommand(connection); 
command.CommandText = "CREATE TABLE IF NOT EXISTS beispiel (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, name VARCHAR(100) NOT NULL);"; 
command.ExecuteNonQuery(); 
command.CommandText = "INSERT INTO beispiel (id, name) VALUES(NULL, 'Test-Datensatz!')"; 
command.ExecuteNonQuery(); 
command.Dispose(); 
connection.Dispose(); 
+0

我試圖通過NuGet引用它,但仍然遇到同樣的問題。即時通訊使用VS 2010和針對任何CPU,.NET 4.0和我也在VS 2012中打開相同的解決方案 –

+0

奇怪的是,爲我工作(調整了更多細節的答案) – meilke

+0

當我創建一個控制檯應用程序它適用於我但不適用於引用相同dll的wpf應用程序 –

相關問題