我很难在c#中与现有的sqlite db建立连接。我想为WPF应用程序制作它。
这是我的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Data.SQLite;
using Finisar.SQLite;
namespace Ebios_WPF
{
/// <summary>
/// Logique d'interaction pour MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
// We use these three SQLite objects:
Finisar.SQLite.SQLiteConnection sqlite_conn;
Finisar.SQLite.SQLiteCommand sqlite_cmd;
Finisar.SQLite.SQLiteDataReader sqlite_datareader;
// create a new database connection:
sqlite_conn = new Finisar.SQLite.SQLiteConnection("Data Source=existingDB.db; Version=3;");
// open the connection:
sqlite_conn.Open();
当我在参数中放入一个现有的sqlite DB时,我有一个XamlParseException:
sqlite_conn = new Finisar.SQLite.SQLiteConnection("Data Source=existingDB.db; Version=3;");
但是如果我创建一个新的数据库就可以了:
sqlite_conn = new Finisar.SQLite.SQLiteConnection("Data Source=NewDB.db; Version=3;New=True;");
感谢您的帮助:)
此致
答案 0 :(得分:0)
我遇到了这个问题(和相同的错误消息),发现sqlite.interop.dll没有自动输出/复制到主WPF项目中的位置。
我有一个类项目(&#34; Repository&#34;),它使用Nuget的System.Data.Sqlite.Core。当我构建该项目时,它输出到它的bin \ Debug \目录,并创建两个子目录:&#34; x64&#34;和&#34; x86&#34;每个都有sqlite.interop.dll。主(WPF)项目中需要这些目录,但不会在构建时移动到那里。因此,为了管理这个,我在主WPF的Debug和Release bin目录中手动创建了一个x64和x86文件夹,并通过sqlite.interop.dll进行复制。我已将此添加到我的帖子构建中(首先创建文件夹x64和x86)。 &#34;存储库&#34;是我的项目的名称,其中安装了Sqlite Nuget包。
copy "$(ProjectDir)Repository\bin\$(ConfigurationName)\x64\*.*" "$(ProjectDir)\bin\$(ConfigurationName)\x64\" /Y
copy "$(ProjectDir)Repository\bin\$(ConfigurationName)\x86\*.*" "$(ProjectDir)\bin\$(ConfigurationName)\x86\" /Y
我能够在visual studio中解决这个问题,但是当我去发布软件并创建一个.msi时,我忘记了这些目录,并且还必须为我的.msi创建它们。
我还没试过,但也许你可以在你的WPF项目中安装Sqlite Nuget包。