有人可以解释使用 .NET/C# 连接到 Interbase 7.1 数据库的最佳方法吗?
该应用程序将安装在许多最终用户计算机上,因此我必须与我的应用程序一起打包的“附加组件”越少越好。
CodeGear 在此处为 InterBase 的注册用户提供免费的 ADO.NET 2.0 驱动程序:
http://cc.embarcadero.com/item/25497
请注意,“InterBase 的注册用户”包括免费的 InterBase 2007 Developers Edition。下载内容说它是 2007 年的,但它与 InterBase 7 配合得很好,CodeGear 的 InterBase 团队告诉我,他们对人们为此目的使用它没有问题。
我不建议使用为 Firebird 设计的驱动程序,因为 InterBase 和 Firebird 的 SQL 语法有些不同,并且在其他功能上也不同。特别是,我认为将任何依赖于 fbclient.dll 的驱动程序与 InterBase 一起使用是完全危险的。
检查此提供程序:
我认为 Firebird .net 提供程序与单声道提供程序相同。顺便说一句,两者都很棒。
帮助文件中的代码适用于许多情况,但不是全部,尤其是在 Windows 8.1、Windows Server 2012 机器上。
确保从 embarcadero 获得最新的 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 文件中的数据库连接示例并非 100% 有效。有关解决方案,请参阅下面的代码示例。
无需 ODBC 连接。要包含在 .NET 项目中并要复制到本地的文件列表是:
我发现了两个有效的连接字符串。要连接使用两个连接字符串之一:
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();