使用.NET C#连接到Interbase 7.1的最佳方法

时间:2008-10-20 19:59:56

标签: c# .net interbase

有人可以解释使用.NET / C#连接到Interbase 7.1数据库的最佳方法吗?

该应用程序将安装在许多最终用户计算机上,因此使用我的应用程序打包的“插件”越少越好。

4 个答案:

答案 0 :(得分:5)

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

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

请注意,“InterBase的注册用户”包括免费的InterBase 2007开发人员版。下载说它是2007年的,但它与InterBase 7一起工作正常,CodeGear的InterBase团队告诉我,他们对使用它的人没有任何问题。

我不建议使用专为Firebird设计的驱动程序,因为InterBase和Firebird的SQL语法有所不同,并且在其他功能方面也有所不同。特别是,我认为使用任何依赖于fbclient.dll和InterBase的驱动程序是完全危险的。

答案 1 :(得分:0)

答案 2 :(得分:0)

我认为Firebird .net提供商与单声道提供商相同。两者都非常棒。

答案 3 :(得分:0)

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

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

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

安装将提取您需要放入应用程序以连接到数据库的所有必要文件。它还将为InterBase XE安装和使用说明.htm文件创建自述文件ADO_NET 2_0驱动程序。 重要说明:此帮助htm文件中的数据库连接示例无法在100%的时间内正常工作。请参阅下面的代码示例以获取解决方案。

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

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

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

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();