2017-02-01 15 views
3

.NET Firebird Provider를 사용하여 포함 된 FB 3.0.1 서버에 연결하려고합니다.Firebird .NET 공급자 및 내장 서버 3

필자가 아는 한 (here (page 6)이라고도 쓰여 있음) fbclient.dll \ fbembed.dll은 없지만 원격 및 포함 된 액세스에 단일 클라이언트 fbclient.dll이 사용되었습니다.

하지만이 FBConnection.Open()를 호출 할 때 나는 System.DllNotFoundException 수 :

Unable to load DLL 'fbembed': 
Impossible to find the specified module (Exception from HRESULT: 0x8007007E). 

어떤 아이디어? 공급자 코드에서 클라이언트 라이브러리는 (아마도 호환성을 위해) fbembed되는 기본 찾고

답변

3

:이 걸린

var connectionString = new FbConnectionStringBuilder 
    { 
    Database = dbPath, 
    ServerType = FbServerType.Embedded, 
    UserID = "SYSDBA", 
    Password = "masterkey", 
    ClientLibrary = "fbclient.dll" 
    }.ToString(); 
+0

니스, 하지만 imho는 주요한 문제가 아니며 dll 파일의 이름을 바꿀 수 있습니다. 문제는 임베디드 서버가 전혀 관리되지 않고 네이티브 dll을 사용하며 네이티브 클라이언트 DLL을 제공해야한다는 것입니다. 네이티브 클라이언트 DLL은 플랫폼에 따라 달라야합니다 (Windows의 경우 최소 32/64 비트). FesDatabase와 ClientFactory를 보라. 엉덩이에 통증이있다. – vitalygolub

+2

@vitalygolub 의견이 무엇에 기여합니까? OP가 C#에서 Firebird Embedded를 사용하고자한다면, 이것이 유일한 방법입니다. –

1

다음 ConnectionString에 새 값을 전달, 지금

internal const string DefaultValueClientLibrary = "fbembed"; 

트릭을 할 알아내는 동안. 그러나 나는이 포함 된 클라이언트의 ....

작동있어 :
실행 NuGet 명령을 설치 패키지 FirebirdSql.Data.FirebirdClient

임베디드 서버의 경우 :
요점 : dll은 Visual Studio에 프로젝트 참조로 추가되지 않습니다. 대신, 해당 위치는 연결 문자열에 정의됩니다.

here에서 전체 서버 우편 번호를 다운로드하십시오. 그런 다음이 세 파일을 프로젝트에 추출하십시오. 아래와 비슷한 구조를 사용하십시오 (또는 적어도 "plugins"하위 디렉토리가 정의되어 있는지 확인하거나 FB 서버에서 오류가 발생하는지 확인하십시오).
my_project \ firebird_server \ fbclient.dll

my_project \ firebird_server \ ib_util.dll

my_project \ firebird_server \ 플러그인 \ engine12.dll

그런 설정 연결 문자열 :

Database=c:\sample_firebird_database.FDB; 
User=my_username; 
Password=my_password; 
ServerType=1; <<-- 1 = embedded server 
Charset=UTF8; 
ClientLibrary=c:\my_project\firebird_server\fbclient.dll; <<--Right here