为WPF应用程序创建本地数据库

时间:2013-09-25 13:33:48

标签: c# .net wpf sqlite

我有一个应用程序,我想在与应用程序相同的文件夹中创建一个数据库。我查看SQLite for .NET 4.0一切看起来都很好,直到我得到一个异常“无法加载文件或程序集'System.Data.SQLite,Version = 1.0.88.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一。试图加载格式不正确的程序。“ SQLite适用于控制台.NET应用程序。我根本不想使用SQL Server。除了XML文件之外还有其他选择吗?

2 个答案:

答案 0 :(得分:4)

SQLite是您描述的场景的绝佳选择。放弃SQLite因为你无法正确包含它似乎是错误的结论。通过NuGet引用它,你很好。库需要SQLite.Interop.dll,您可能没有正确包含它。当您在x86下运行时,您可能还包含类似x64版本的内容(有关详细信息,请参阅this)。通过NuGet使用它,你应该没问题。

以下是我在5分钟内完成的快速设置:

  1. 创建的控制台应用程序(VS Express 2012 for Desktop,.NET v4,任何CPU,调试)
  2. 通过NuGet安装
  3. 使用以下代码
  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();
    

答案 1 :(得分:0)

我找到了另一个解决这个问题的方法。问题在于平台(x86 / x64)。我得到了Sqllite v1.0.88的源代码并打开了VS 2010解决方案文件。我注意到默认情况下目标是混合平台。我将其更改为任何CPU并构建了System.Data.SQLite.2010项目。我在我的项目中引用了这个dll,我没有x86 / x64平台的问题。一个dll适用于两者。