interbase 7.5和visual studio 2010

时间:2011-02-07 11:38:11

标签: visual-studio-2010 ado.net interbase

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

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

3 个答案:

答案 0 :(得分:1)

连接到数据库(从VS服务器资源管理器)显示一个小对话框,在那里你可以选择作为数据源,然后你可以在你想要使用的提供者下面的下拉菜单中指定,如果即使在选择上面你仍然做在从控制面板创建ODBC数据源后,您无法看到Interbase ADO.NET连接器,您可以选择ODBC并使用ODBC数据源。

答案 1 :(得分: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数据操作。

答案 2 :(得分:0)

我添加了另一个答案,因为第一个答案是有效的,但仅在80%的情况下有效,如果使用较旧的驱动程序。我已将此更新为包含在Visual Studio 2013中工作。

确保从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();

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

正如我所提到的,这适用于仅安装了Interbase的Server 2012和Windows 8.1计算机。