I have an application and I want to create a DB in the same folder as the application. I looked into SQLite for .NET 4.0 everything looked fine untill I got an exception "Could not load file or assembly 'System.Data.SQLite, Version=1.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was made to load a program with an incorrect format." The SQLite works with a console .NET application. I dont want to use SQL Server at all. Is there an alternative other than XML files?
问问题
4672 次
2 回答
4
SQLite 是您描述的场景的绝佳选择。因为无法正确包含 SQLite 而放弃 SQLite 似乎是错误的结论。通过NuGet引用它就可以了。SQLite.Interop.dll
您可能没有正确包含的库需要。当您在 x86 下运行时,您可能还包含了类似 x64 版本的内容(有关详细信息,请参阅此内容)。通过 NuGet 使用它,你应该没问题。
这是我在 5 分钟内完成的快速设置:
- 创建控制台应用程序(VS Express 2012 for Desktop、.NET v4、Any CPU、Debug)
- 通过 NuGet 安装
- 使用了以下代码
- 奇迹般有效!
代码示例:
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();
于 2013-09-25T13:40:23.600 回答
0
我找到了另一个解决这个问题的方法。问题出在平台(x86/x64)上。拿到了Sqllite v1.0.88的源码,打开VS 2010的解决方案文件。我注意到默认情况下目标是混合平台。我将其更改为任何 CPU 并构建了 System.Data.SQLite.2010 项目。我在我的项目中引用了这个 dll,我没有遇到 x86/x64 平台的问题。一个 dll 对两者都有效。
于 2013-09-25T19:40:00.163 回答