簡體   English   中英

Firebird .NET 提供程序和嵌入式服務器 3

[英]Firebird .NET provider and embedded server 3

我正在嘗試使用 .NET Firebird Provider 連接到嵌入式 FB 3.0.1 服務器。

據我所知,(也寫在這里(第 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(可能是為了兼容性):

internal const string DefaultValueClientLibrary = "fbembed";

現在,將新值傳遞給 ConnectionString 即可解決問題:

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

這花了一段時間才弄清楚。 但我讓它工作......

對於嵌入式客戶端:
運行 NuGet 命令:Install-Package FirebirdSql.Data.FirebirdClient

對於嵌入式服務器:
關鍵點:dll 不會作為項目引用添加到 Visual Studio。 相反,它們的位置在連接字符串中定義。

這里下載完整的服務器 zip。 然后將這三個文件解壓縮到您的項目中。 使用類似於下面的結構。

  • my_project\\firebird_server\\fbclient.dll
  • my_project\\firebird_server\\ib_util.dll
  • my_project\\firebird_server\\plugins\\engine12.dll //是的,需要在“plugins”子目錄中有這個,否則firebird服務器會拋出錯誤。

然后設置連接字符串:

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; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM