2016-06-17 3 views
0

C#에서 기존 sqlite db와 연결하기가 어렵습니다. WPF 애플리케이션 용으로 만들고 싶습니다. 내가 인수에 기존 SQLite는 DB를 넣어sqlite와 C# 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를 사용하는 클래스 프로젝트 ("Repository")가 있습니다. 해당 프로젝트를 빌드하면 bin \ Debug \ 디렉토리에 출력되고 두 개의 하위 디렉토리가 생성됩니다. 각각 "sqlite.interop.dll"과 함께 "x64"및 "x86"이 생성됩니다. 이러한 디렉터리는 기본 (WPF) 프로젝트에 필요하지만 빌드시에는 이동되지 않습니다. 그래서 이것을 관리하기 위해 수동으로 x64 및 x86 폴더를 기본 WPF의 디버그 및 릴리스 bin 디렉토리에 만들고 sqlite.interop.dll을 통해 복사했습니다. 나는 이것을 (내 첫 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 

나는 비주얼 스튜디오에서이 문제를 해결 할 수 있었다, 그러나 나는 소프트웨어를 출시과의 .msi를 만들 갔을 때, 나는 디렉토리 잊어도 내의 .msi 위해 그들을 만들 수 있었다.

나는 그것을 시도하지는 않았지만, 아마도 당신은 WPF 프로젝트에 Sqlite Nuget 패키지를 설치할 수있다.

+0

고맙습니다. 작동합니다. – micka777