web-dev-qa-db-ja.com

Visual C#2010でFirebirddb組み込みサーバーに接続して使用する方法

Microsoft Visual C#2010でFirebird組み込みサーバーを使用しようとしていました。これまでに行ったことは次のとおりです。

  1. ダウンロードFirebird.NetデータプロバイダーFirebird Client v2.5.2 )。

  2. ダウンロードFirebird組み込みサーバーFirebird組み込みサーバーv2.5. )。

  3. FirebirdSql.Data.FirebirdClient.dllへの参照をプロジェクトに追加しました。

  4. 抽出およびコピーfbembed.dllファイルをアプリケーションのディレクトリに。

  5. FDBファイルを追加しました"TEST.FDB"をアプリケーションのディレクトリに追加しました。

  6. "sing FirebirdSql.Data.FirebirdClient;"ステートメントを追加しました。

これまでのところ良い(私は思う)...

次のコードを使用してFDBファイルに接続しようとすると:

    FbConnection con = new FbConnection("User=SYSDBA;" + "Password=masterkey;" + "Database=TEST.FDB;" + "DataSource=127.0.0.1;" + "Port=3050;" + "Dialect=3;" + "Charset=UTF8;");
    try  {
             con.Open();
         }
    catch (Exception ex) 
         {
            MessageBox.Show(ex.ToString());
         }

コードがDBファイルに正しく接続されていないことを意味するメッセージボックスが常に表示されます。私は何か間違ったことをしていますか?私はまだC#に慣れていないので、これを行う方法や修正する方法がわかりません。誰かがこれを手伝ってくれることを願っています。

ありがとう:)

編集:これが私が例外で得るものです:

FirebirdSql.Data.FirebirdClient.FbException(0x80004005):ホスト「127.0.0.1」へのネットワーク要求を完了できません。 --->ホスト「127.0.0.1」へのネットワーク要求を完了できません。 FirebirdSql.Data.FirebirdClient.FbConnectionInternal.Connect()、FirebirdSql.Data.FirebirdClient.FbConnectionPool.Create()、FirebirdSql.Data.FirebirdClient.FbConnectionPool.CheckOut()、FirebirdSql.Data.FirebirdClient.FbConnection.Open()、fbTestApp .Form1.button1_Click(Object sender、EventArgs e)in C:\ Documents and Settings\ermac\My Documents\Visual Studio 2010\Projects\fbTestApp\fbTestApp\Form1.cs:line 25

12
SolidSnake

私はついに6時間の作業の後に解決策を見つけました:)

グーグルの答えのほとんどは間違っているか、とても古いです。それらのすべては私が私のプロジェクトにfbembed.dllファイルを含める必要があるだけだと言います。

私が行ったいくつかの調査の後。 firebird.msg、firebird.conf、icudt30.dll、icuin30.dll、icuuc30.dll、ib_util.dll私のプロジェクトファイルと出力フォルダ ..

重要なお知らせ:コンパクトな.Netデータプロバイダーは絶対に使用しないでください。通常およびスーパーファイアバードサーバー専用に作成されたためです。組み込みサーバーでは機能しません。

10
SolidSnake

Firebird 2.5が埋め込まれているので、このすべてのファイルをアプリケーションディレクトリにコピーします。

aliases.conf (optional)
fbembed.dll
firebird.conf
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest  : -- Not sure if this 3 files are necessary
msvcp80.dll                  : -- but i copy them :)
msvcr80.dll                  : -- see http://www.firebirdnews.org/?p=2248
intl\fbintl.conf   : Without those files you can't use
intl\fbintl.dll    : all charset and collations
udf\*  : if you want to use pre-build UDF

接続文字列で、サーバーがserverType = 1で埋め込まれていることを指定します。

User=SYSDBA;Password=masterkey;Database=E:\TEST.FDB;Dialect=3;Charset=UTF8;ServerType=1;

IDPLicense.txtとIPLicense.txtも忘れてしまいましたが、ライセンス発行用のアプリケーションと一緒に配布する必要があると思いますか?

6
PlageMan

FirebirdDLLをFirebirdというプロジェクトのディレクトリに配置しました。ファイルをコピーするためのビルド後イベントを追加しました。

copy $(ProjectDir)Firebird\*.dll $(ProjectDir)$(OutDir)*.dll"
2
bill