2

最近几天,我一直在寻找一种解决方案来开发连接到 Interbase 7.5 数据库的 ac# 应用程序。我从这里尝试了 db 驱动程序和提供的 ado.net 驱动程序(“Interbase Connectivity Drivers”)。当我在 VS2010 中运行“连接到数据库”时,没有连接到 IB 的选项。那么我需要做什么/安装/配置才能在VS中使用这个驱动程序?

操作系统是在 VM 中运行的 WinXP SP3

4

3 回答 3

1

连接到数据库(来自 VS 服务器资源管理器)向您显示一个小对话框,您可以在其中选择作为数据源,然后您可以在要使用的提供程序下方的下拉列表中指定,如果即使在上面选择后您仍然看不到Interbase ADO.NET 连接器在从控制面板创建之后,您肯定可以选择 ODBC 并使用 ODBC 数据源。

于 2011-02-07T11:50:25.667 回答
1

如果您安装了 2.0 驱动程序,那么安装目录中有一个名为 ADO_NETreadme.htm 的方法文件。它详细介绍了如何安装和运行驱动程序,包括将其连接到 .net 对象的代码。它添加了如何将 dll 添加到项目和其他设置问题。该驱动程序还假设 interbase 安装在运行它的机器上,因为它需要 admin.ib 文件进行身份验证。我按照自述文件并在不使用 ODBC 的情况下成功连接。

using Borland.Data;  //IB Database Connectivity

DbConnection dbconn = new TAdoDbxConnection();
string database = DatabasePath.tostring();
dbconn.ConnectionString = "DriverName=Interbase;Database="Datbasepath";RoleName="Password";User_Name="Userid"   + "SQLDialect=3;MetaDataAssemblyLoader=Borland.Data.TDBXInterbaseMetaDataCommandFactory,Borland.Data.DbxReadOnlyMetaData,Version=11.0.5000.0,Culture=neutral,"    + "PublicKeyToken=91d62ebb5b0d1b1b;GetDriverFunc=getSQLDriverINTERBASE;LibraryName=dbxint30.dll;VendorLib=GDS32.DLL";

try { dbconn.Open(); }
catch (Exception ex)
{ throw (ex); }

DbCommand cmd = dbconn.CreateCommand();
cmd.CommandText = "Select SQL statement..."
DbDataReader myreader = cmd.ExecuteReader();

或者你可以

cmd.CommandText = "Delete or Append...SQL"
cmd.ExecuteNonQuery();

然后,您可以设置数据集并使用 DbDataReader 和标准绑定源将数据库中的任何数据读入其中。从那里开始是简单的标准 .Net 数据操作。

于 2014-01-17T13:43:33.040 回答
0

我添加了另一个答案,因为第一个答案是有效的,但如果使用较旧的驱动程序,则仅在 80% 的情况下有效。我已对此进行了更新,使其适用于 Visual Studio 2013。

确保从 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 文件中的 DB 连接示例在 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 DB 安装)
  • interbase.msg(来自 interbase DB 安装)

我发现了两个有效的连接字符串。要连接使用两个连接字符串之一:

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

其余的就像我之前给出的示例。

就像我提到的,这适用于仅安装了 Interbase 的 Server 2012 和 Windows 8.1 机器。

于 2014-10-27T12:15:11.077 回答