Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Don';无法加载fbembed.dll,但它';它在测试用例中是好的吗?_C#_Database_Firebird_Embedded Database - Fatal编程技术网

C# Don';无法加载fbembed.dll,但它';它在测试用例中是好的吗?

C# Don';无法加载fbembed.dll,但它';它在测试用例中是好的吗?,c#,database,firebird,embedded-database,C#,Database,Firebird,Embedded Database,我正在使用嵌入在.net应用程序中的FireBird。我的联系人是: 代码是: public class ImDb{ private static FbConnection _fbConnection; public static FbConnection IMManagerConnection() { var fbConnStringBuilder = new FbConnectionStringBuilder(); fbConnStr

我正在使用嵌入在.net应用程序中的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();
    }
  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];
    }
这是我的测试用例:

代码是:

    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();
    }
  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];
    }
在我的应用程序中,这是错误的!!报表不加载fbembed.dll

代码是:

    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();
    }
  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的值:

测试用例运行正常

但在应用程序中,该错误再次发生。

Firebird 2.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
在您的情况下,microsoft文件丢失。

没有解决方案

我必须更改FireBird服务器的版本

没关系


顺便说一句,我在我的应用程序中使用的是VisualWebGUI,路径问题可能与此有关。也许VWG和IIS之间有不同?我不知道,只是guest;)

对于Windows应用程序,它将在.exe文件所在的文件夹中查找dll

对于Web应用,可以设置连接字符串的ClientLibrary属性:


connectionString=“ServerType=1;User=SYSDBA;Password=masterkey;dialogy=3;Database=;ClientLibrary=“

请使用实际代码而不是屏幕截图进行更新。。。这允许其他人搜索相同的问题。我看到了一些ASP.NET片段。您确定正在从此目录运行应用程序吗?可能它实际上是从不同的目录运行的-IIS(Express)等。这些文件不是必需的。这些可能与其他产品一起安装。我认为问题的关键是:测试用例没有问题,但只有在应用程序中才有问题。然后我将msv*.dll的文件复制到bin目录,问题仍然存在。在您的应用程序中,分配客户端库的行注释为//fbConnStringBuilder.ClientLibrary=@“fbedded.dll”;为什么?