sqlite 连接与 c# XamlParseException
sqlite connection with c# XamlParseException
我很难在 C# 中与我现有的 sqlite 数据库建立连接。我想为 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 数据库放入参数时,出现 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;");
感谢您的帮助:)
此致
我遇到了这个问题(和相同的错误消息),发现 sqlite.interop.dll 没有自动 output/copied 到它应该在主 WPF 项目中的位置。
我有一个 class 项目 ("Repository"),它使用来自 Nuget 的 System.Data.Sqlite.Core。当我构建该项目时,它会输出到它的 bin\Debug\ 目录,并创建两个子目录:"x64" 和 "x86",每个子目录中都有 sqlite.interop.dll。主 (WPF) 项目中需要这些目录,但不会在生成时移动到那里。因此,为了解决这个问题,我在主 WPF 的 Debug 和 Release bin 目录中手动创建了一个 x64 和 x86 文件夹,并复制了 sqlite.interop.dll。我已将其添加到我的 post 构建中(首先创建文件夹 x64 和 x86)。 "Repository" 是我安装 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 创建它们。
我没试过,但也许你可以将 Sqlite Nuget 包安装到你的 WPF 项目中。
我很难在 C# 中与我现有的 sqlite 数据库建立连接。我想为 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 数据库放入参数时,出现 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;");
感谢您的帮助:)
此致
我遇到了这个问题(和相同的错误消息),发现 sqlite.interop.dll 没有自动 output/copied 到它应该在主 WPF 项目中的位置。
我有一个 class 项目 ("Repository"),它使用来自 Nuget 的 System.Data.Sqlite.Core。当我构建该项目时,它会输出到它的 bin\Debug\ 目录,并创建两个子目录:"x64" 和 "x86",每个子目录中都有 sqlite.interop.dll。主 (WPF) 项目中需要这些目录,但不会在生成时移动到那里。因此,为了解决这个问题,我在主 WPF 的 Debug 和 Release bin 目录中手动创建了一个 x64 和 x86 文件夹,并复制了 sqlite.interop.dll。我已将其添加到我的 post 构建中(首先创建文件夹 x64 和 x86)。 "Repository" 是我安装 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 创建它们。
我没试过,但也许你可以将 Sqlite Nuget 包安装到你的 WPF 项目中。