我们从客户端获取firebird数据库的.ydb文件。 Currenlty我们创建了一个带有一些额外安装/驱动程序的DSN,然后访问文件中的表和数据。
我们计划将此流程移至azure云服务(而不是azure VM),以避免创建DSN等。我们需要从c#代码访问.ydb文件。
我无法使用firebird ado.net提供程序直接打开,抛出异常。
以下是在机器中创建DSN的步骤。它工作了很长时间。
Windows Server中的Firebird ODBC设置
DSNName-DSNName1,
Driver-IscDbc,
数据库-E:\ Somefolder \ FileName.ydb
客户端-C:\ PROGRAMFILES \火鸟\ Firebird2_5 \ WOW64 \ fbclient.dll
数据库帐户 - SYSDBA
密码 - masterkey
角色 - SYSDBA
CharSet - 无
然后使用下面的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"/>
现在要修改上面的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文件?
答案 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();
}