如何在C#中打开firebird数据库文件?

时间:2016-07-12 09:01:59

标签: c# .net firebird

我们从客户端获取firebird数据库的.ydb文件。 Currenlty我们创建了一个带有一些额外安装/驱动程序的DSN,然后访问文件中的表和数据。

我们计划将此流程移至azure云服务(而不是azure VM),以避免创建DSN等。我们需要从c#代码访问.ydb文件。

我无法使用firebird ado.net提供程序直接打开,抛出异常。

以下是在机器中创建DSN的步骤。它工作了很长时间。

  1. Windows Server中的Firebird ODBC设置

    DSNName-DSNName1,

    Driver-IscDbc,

    数据库-E:\ Somefolder \ FileName.ydb

    客户端-C:\ PROGRAMFILES \火鸟\ Firebird2_5 \ WOW64 \ fbclient.dll

    数据库帐户 - SYSDBA

    密码 - masterkey

    角色 - SYSDBA

    CharSet - 无

  2. 然后使用下面的C#代码使用DSN访问FileName.ydb。

    <CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAllCaps="true"
    android:singleLine="true"
    android:ellipsize="end"
    android:textColor="#0004ff"
    android:textSize="@dimen/20sp"/>
    
  3. 现在要修改上面的DSN创建过程,我在c#解决方案中添加了FirebirdSql.Data.FirebirdClient nuget包。

    using (var connection = new OdbcConnection("DSN=DSNName1"))
    {
        connection.Open();
        var schema = connection.GetSchema("Tables");
        var tableNames = new List<string>();                    
    }
    

    它在fbConn.Open()上抛出异常; - 无法完成托管&#34; localhost&#34;。

    的网络请求

    如何在不创建DSN的情况下直接在C#中打开.ydb文件?

1 个答案:

答案 0 :(得分:1)

您似乎遇到的最大问题是您没有安装或运行Firebird服务器,因此您无法实际连接到它并要求它打开数据库文件。

您可以从http://www.firebirdsql.org/en/downloads/下载Firebird(您可能需要Firebird 2.5)并安装它。然后在一个引用FirebirdSql.Data.FirebirdClient的项目中,你应该能够连接到:

using (var connection = new FbConnection(@"User=username;Password=password;Database=D:\data\DB\database.fdb"))
{
    connection.Open();
}

如果由于某种原因您不想安装Firebird服务器,则需要使用嵌入的Firebird(也可以从上面的链接下载)。

您需要确保您的应用程序运行32位或64位,并下载正确的Firebird嵌入式软件包。将它放在路径或可执行文件的文件夹中。在网址中,您需要添加ServerType=1以获得嵌入式支持(默认为ServerType=0):

using (var connection = new FbConnection(@"ServerType=1;User=username;Password=password;Database=D:\data\DB\database.fdb"))
{
    connection.Open();
}