0

.netアプリケーションに埋め込まれたFireBirdを使用しています。仲間は私の接続です: FireBird接続

コードは次のとおりです。

    public class ImDb{
    private static FbConnection _fbConnection;
    public static FbConnection IMManagerConnection() {
        var fbConnStringBuilder = new FbConnectionStringBuilder();
        fbConnStringBuilder.ServerType = FbServerType.Embedded;
        fbConnStringBuilder.UserID = "sysdba";
        fbConnStringBuilder.Password = "masterkey";
        //fbConnStringBuilder.ClientLibrary = @"fbembed.dll";
        fbConnStringBuilder.Database = @"IMMANAGER.FDB";

        _fbConnection = new FbConnection(fbConnStringBuilder.ConnectionString);
        return _fbConnection;
    }
}

これは私のテストケースです: 私のテストケース、それは大丈夫です

コードは次のとおりです。

    [Test]
    public void SimSymbolTest(){
        FbConnection fbc=IMManager.Common.ImDb.IMManagerConnection();
        fbc.Open();
        Console.WriteLine("The Server Version is :" + fbc.ServerVersion);
        Console.WriteLine("The database is :" + fbc.Database);
        Console.WriteLine("The DataSource is :" + fbc.DataSource);
        Console.WriteLine("The Version Number is: " + fbc.ServerVersionNumber);
        fbc.Close();
    }

私のアプリケーションでは、エラーです!!レポートfbembed.dllをロードしないでください 私のアプリケーションスニペ​​ット

コードは次のとおりです。

  private DataTable ExeQuery(string sqlString){
        DataSet ds = new DataSet();
        FbConnection fbc = ImDb.IMManagerConnection();
        try {
            fbc.Open();
            FbTransaction fbt = fbc.BeginTransaction();
            FbCommand fbcmd = new FbCommand(sqlString, fbc, fbt);
            FbDataAdapter fbda = new FbDataAdapter(fbcmd);
            fbda.Fill(ds);
            fbt.Commit();
        } catch (Exception ex) {
            MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
        } finally {
            fbc.Close();
        } 
        return ds.Tables[0];
    }

そして、これは私のディレクトリです:

私のディレクトリ

助けてください!よろしくお願いします!

次に、接続コードを変更し、ClientLibraryの値を追加します。 ClientLibraryが割り当てました

そして、テストケースは正常に実行されています!

ただし、アプリケーションでは、エラーが再度発生します。 ここに画像の説明を入力してください

4

3 に答える 3

1

埋め込まれたFirebird2.5の最小限のファイルセット:

INTL\fbintl.conf
INTL\fbintl.dll
fbembed.dll
firebird.msg
ib_util.dll
icudt30.dll
icuin30.dll
icuuc30.dll
Microsoft.VC80.CRT.manifest
msvcp80.dll
msvcr80.dll

あなたの場合、マイクロソフトのファイルがありません。

于 2012-11-25T13:55:19.423 に答える
0

解決策はありません!

FireBirdサーバーのバージョンを変更する必要がありました。

大丈夫です!

ところで、私はアプリケーションでVisual Web Guiを使用していますが、PATHの問題はおそらくこれに関するものです。VWGとIISで違いがあるのではないでしょうか?わかりません、ゲストだけです;)。

于 2012-11-26T14:38:46.193 に答える
0

Windowsアプリの場合、.exeファイルが配置されているフォルダーでdllを検索します。

Webアプリの場合、接続文字列のClientLibraryプロパティを設定できます。

connectionString = "ServerType = 1; User = SYSDBA; Password = masterkey; Dialect = 3; Database =; ClientLibrary ="

于 2014-09-11T09:54:45.897 に答える