2011-02-07 131 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機器上。