2016-06-17 18 views
0

私は、C#で既存のsqliteデータベースとの接続を行うのが難しいです。私はWPFアプリケーションのためにそれを作りたいと思う。私は、引数に既存のsqliteのDBを入れC#でのsqlite接続XamlParseException

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(); 

私は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

この問題(および同じエラーメッセージ)があり、sqlite.interop.dllがメインのWPFプロジェクトのどこに自動的に出力/コピーされないことがわかりました。

NugetのSystem.Data.Sqlite.Coreを使用するクラスプロジェクト(「リポジトリ」)があります。そのプロジェクトをビルドすると、bin \ Debug \ディレクトリに出力され、それぞれにsqlite.interop.dllを持つ2つのサブディレクトリ "x64"と "x86"が作成されます。これらのディレクトリは、メイン(WPF)プロジェクトでは必要ですが、ビルド時には移動されません。そこで、これを管理するために、メインのWPFのDebugおよびRelease binディレクトリにx64およびx86フォルダを手動で作成し、sqlite.interop.dllにコピーしました。私はこのように私のポストビルドにこれを追加しました(最初にフォルダx64とx86を作成します)。 "リポジトリ"は、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パッケージをインストールすることができます。

+0

ありがとうございます、それは動作します: – micka777

関連する問題