2011-02-07 124 views
2

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

OS是在VM

回答

1

连接到数据库(从VS服务器资源管理器)的WinXP SP3运行表明,你一个小对话框,在那里你可以作为数据源选择,那么你可以在下拉指定提供商下方如果即使在选择上述内容之后,仍然没有看到Interbase ADO.NET连接器,那么在从控制面板创建它之后,您肯定可以选择ODBC并使用ODBC数据源。

+0

您可以添加一个ODBC连接来使用它,但这不是必需的,并且会增加很多开销。额外的开销,因为那么你必须在你想使用该程序的任何机器上安装odbc连接。你所需要做的只是将dll文件包含在你的项目中,并且它可以工作。 – 2014-10-27 12:01:19

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和标准的BindingSource数据库的任何数据。从那里它是简单的标准.Net数据操作。

+0

我使用的上述连接字符串基于旧的ADO 2.0 Codegear驱动程序将无法在所有情况下工作,并在Windows 2012 Server/8.1计算机上出现问题。如果上面的答案给出了问题,请参阅下面的附加答案。 – 2014-10-27 11:32:27

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安装和使用Instructions.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(来自IB的DB安装)
  • 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机器上。