2014-05-15 2 views
2

환영합니다. Windows Mobile 6에 Firebird 2.5.2 데이터베이스 (Visual Studio 2008 및 Forms 사용)에 연결하는 응용 프로그램을 작성하려고합니다.'System.Data.Common.DbTransaction'형식이 참조되지 않은 어셈블리에 정의되어 있습니다. 어셈블리에 대한 참조를 추가해야합니다.

static public void Execute(FbTransaction tr, string sql, bool commit) 
    { 
     FbConnection cn = null; 
     FbCommand cmd = null; 

     if (tr != null) 
     { 
      cmd = new FbCommand(sql, tr.Connection, tr); 
     } 
     else 
     { 
      cn = new FbConnection(ConnString()); 
      cmd = new FbCommand(sql, cn); 
     } 

     if (cmd.Connection.State == ConnectionState.Closed) 
     { 
      cmd.Connection.Open(); 
     } 

     cmd.ExecuteNonQuery(); 

     cmd.Dispose(); 

     if (cn != null) 
     { 
      cn.Close(); 
      cn.Dispose(); 
     } 
    } 

내가 (실행 강조)

오류 1 유형 'System.Data.Common.DbTransaction'는 어셈블리에 정의되어있는 차선의 1에 오류 : 나는이 코드 조각을 썼다 그것은 참조되지 않습니다. 'System.Data, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089'어셈블리에 대한 참조를 추가해야합니다.

내 참조에 System.Data 버전 2.0.0.0이 추가되었습니다. 어떤 도움을 주시면 감사하겠습니다.


나는 해결책을 발견했다. 앞으로 비슷한 문제에 직면하게 될 사람들을 위해, 여기에 내가 어떻게했는지 들어 보겠습니다. VS 2008 (.net 3.5) 및 firebird 2.5.2 (최신)에서 64 비트 Windows 양식을 사용하려면, 당신이해야 할 첫 번째 일은, 파이어 버드 임베디드 승리 X 64 패키지를 http://www.firebirdsql.org/en/firebird-2-5-2-upd1/

다음을 다운로드 날이 한 일에 대해 (유 코드 VS2010에 이상 최신 버전을 시도하는 경우), .NET 공급자의 소스 코드 버전에 갈 입니다 http://sourceforge.net/projects/firebird/files/firebird-net-provider/2.5.2/

열기, 구성 관리자에서 x64 아래에 컴파일하십시오. 특정 .net 버전의 System.Data에 대한 참조를 추가해야합니다.

이제 원하는 Winform 프로젝트를 만들고 단계에서 다운로드 한 임베드 된 Firebird 패키지의 모든 .dll을 포함하십시오. 1 내가 NETProvider-2.5.2-SRC \ NETProvider \ 소스 \ FirebirdSql \ 데이터 \ 빈 \ \ 내 에 있었다

이 새로 컴파일 FirebirdSql.dll에 대한 참조를 추가합니다 (프로젝트의 루트 디렉토리에 기존 항목 추가) x64 \ Debug \ FirebirdSql.Data.FirebirdClient.dll

그리고 즐기십시오. 보너스 - 지역 파이어 버드 서버>

문자열 경로는 프로젝트의 파이어 버드 .NET 공급자를 참조 적이 나를

 string Firebird_path = "User=SYSDBA;Password=masterkey;" + 
      "Database=localhost:L:\\DBS\\DBS.FDB; " + 
      "DataSource=localhost;Charset=NONE;"; 
+0

DbTransaction은 어디에 사용합니까? 게시 한 코드에서 찾을 수 없습니다. – dave

+0

.Net Framework 버전을 사용하고 있습니까? DbTransaction은 2.0 이후의 모든 버전에서 지원되어야하지만, 결코 알지 못합니다. – hschne

+0

.Net 3.0을 사용하고 있으며, 어떤 시점에서도 DbTransaction을 사용하지 않습니다. – Luntri

답변

1

위해 일한 것입니다, 그래서 여기 까다 롭습니다?

here을 찾을 수 있습니다. NuGet 패키지로 추가 할 수도 있습니다.

+0

예 그렇습니다 -> FirebirdSql.Data.FireBirdClient 및 FirebirdSql.Data에 ref를 추가하면됩니다.UnitTests, 패키지에 더 이상 아무것도 없었습니다. – Luntri

+0

결국 그것은 적절한 패키지를 수동으로 컴파일하고 임베디드 FirebirdServer를 사용하는 문제였습니다. 앞으로이 문제를 만나는 사람들을 위해 원래 게시물을 편집했습니다. – Luntri

+0

해답을 수락하고 해결책을 공유해 주셔서 감사합니다! – dave

0

클래스 FbTransactionDbTranaction 인터페이스를 구현합니다. 즉, FbTransaction을 코드에 사용하면 런타임에이 인터페이스를로드해야하므로 어셈블리를 참조해야합니다.

관련 문제