使用.NET C#连接Interbase7.1的最佳方式

本文关键字:最佳 方式 Interbase7 NET 连接 使用 | 更新日期: 2023-09-27 17:48:48

有人能解释一下使用.NET/C#连接Interbase7.1数据库的最佳方式吗?

该应用程序将安装在许多最终用户计算机上,因此我必须与应用程序打包的"附加组件"越少越好。

使用.NET C#连接Interbase7.1的最佳方式

CodeGear为InterBase的注册用户提供免费的ADO.NET 2.0驱动程序:

http://cc.embarcadero.com/item/25497

请注意,"InterBase的注册用户"包括免费的InterBase2007DevelopersEdition。下载上说它是2007年的,但它在InterBase7上运行良好,CodeGear的InterBase团队告诉我,他们对人们为此目的使用它没有问题。

我不建议使用为Firebird设计的驱动程序,因为InterBase和Firebird的SQL语法有些不同,其他功能也有所不同。特别是,我认为在InterBase中使用任何依赖于fbclient.dll的驱动程序都是非常危险的。

检查此提供程序:

  • Visual Studio.Net的Interbase和Firebird开发人员
  • Firebird.NET数据提供程序
  • FireBird-InterBase.NET(Mono)提供商

我认为Firebird.net提供程序与mono中的提供程序相同。两者都非常出色。

帮助文件中的代码适用于许多情况,但不是所有情况,尤其是在Windows 8.1和Windows Server 2012计算机上。

请确保从embacadero获取最新的InterBase_ADO.NET。我更新到的版本是Borland.Data.AdoDbxClient.dll的16.0.4327.44959版本。(右键单击文件、属性和详细信息可查看版本号)。安装还为64位创建了一个x64版本的文件夹,尽管我没有使用它。我以x86为目标,没有任何问题。

不需要在每台计算机上都安装ADO.NET,您只需要在项目中包含以下文件,并在运行的计算机上安装Interbase即可。我只在开发计算机上安装了驱动程序。

安装程序将提取您需要放入应用程序中以连接到数据库的所有必要文件。它还将创建自述文件ADO_NET 2_0 Driver for InterBase XE Installation and Usage Instructions.htm文件重要提示:此帮助htm文件中的DB连接示例在100%的情况下都不起作用。有关解决方案,请参阅下面的代码示例。

不需要ODBC连接。要包含在.NET项目中并复制到本地的文件列表为:

  • Borland.Data.AdoDbxClient.dll
  • Borland.Data.DbxCommonDriver.dll
  • Borland.Data.DBX InterBaseDriver.dll
  • Borland.Delphi.dll
  • Borland.VclDbRtl.dll
  • Borland.VclRtl.dll
  • dbxadapter.dll(x86或x64版本)
  • dbxint.dll(x86或x64版本)
  • gds32.dll(来自数据库间数据库安装)
  • interbase.msg(来自interbaseDB安装)

我找到了两个有效的连接字符串。要连接,请使用两个连接字符串之一:

connectionstring1 = "DriverName=Interbase;Database=" + database + ";User_Name=" + userid + ";Password=" + password;
connectionstring1 = connectionstring1 + ";SQLDialect=3;MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,";
connectionstring1 = connectionstring1 + "PublicKeyToken=91d62ebb5b0d1b1b;GetDriverFunc=getSQLDriverINTERBASE;LibraryName=dbxint30.dll;VendorLib=GDS32.DLL";
connectionstring2 = “User_Name="+userid+";Password="+password+";Database="+database+";ServerType=0;Charset=NONE;LibraryName=.''dbxint.dll;VendorLib=GDS32.DLL;GetDriverFunc=getSQLDriverINTERBASE;SQLDialect=3";

GlobalObjects.dbconn = (TAdoDbxConnection)TAdoDbxInterBaseProviderFactory.Instance.CreateConnection();
GlobalObjects.database = databasepath;
GlobalObjects.dbconn.ConnectionString = connectionstring1;  //or connectionstring2
GlobalObjects.dbconn.Open();