2011-02-07 2 views
2

Я провел последние несколько дней, чтобы найти решение для разработки приложения C#, которое подключается к базе данных Interbase 7.5. Я попробовал драйвер db от here и предоставленный драйвер ado.net («Interbase Connectivity Drivers»). Когда я запускаю «Подключение к базе данных» в VS2010, нет возможности подключиться к IB. Итак, что мне нужно сделать/установить/настроить для использования этого драйвера в VS?interbase 7.5 и visual studio 2010

ОС WinXP SP3 работает в VM

ответ

1

Подключение к базе данных (с VS Server Explorer) показывает небольшое диалоговое окно, там вы можете выбрать в качестве источника данных, то вы можете указать в выпадающем списке ниже поставщика вы хотите использовать, даже если после выбора выше вы все еще не видите соединитель ADB.NET Interbase, вы, безусловно, можете выбрать ODBC и использовать источник данных ODBC, создав его с панели управления.

+0

Вы можете добавить ODBC-соединение, чтобы использовать это, но это не обязательно и много дополнительных накладных расходов. Дополнительные накладные расходы, потому что тогда вам нужно установить соединение odbc на любом компьютере, на котором вы хотите использовать программу. Все, что вам действительно нужно сделать, это включить DLL-файлы в ваш проект, и он работает. –

1

Если вы установили драйвер 2.0, в каталоге установки есть файл с именем ADO_NETreadme.htm. В нем подробно описано, как установить и запустить драйвер, включая код для подключения к объектам .net. В нем добавлено, как добавить DLL в проект и другие проблемы с настройкой. Этот драйвер также предполагает, что interbase установлен на компьютере, на котором он запущен, поскольку для аутентификации ему потребуется файл admin.ib. Я следил за документом readme и успешно подключался без использования 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. Если приведенный выше ответ дает проблемы, см. Мой дополнительный ответ ниже. –

0

Я добавил еще один ответ, потому что первый ответ действителен, но действителен только в 80% сценариев при использовании старшего драйвера. Я обновил это, включив его в Visual Studio 2013.

Убедитесь, что вы получили последнюю версию InterBase_ADO.NET от embarcadero. Версия, которую я обновил до версии 16.0.4327.44959 Borland.Data.AdoDbxClient.dll. (Щелкните правой кнопкой мыши файл, свойства, детали, чтобы увидеть номер версии). Установка также создает папку версии 64 для 64-разрядной версии, хотя я ее не использовал. Я нацелился на x86 без проблем.

Эта установка ADO.NET не требуется делать на каждой машине - вам просто нужно включить указанные ниже файлы в свой проект и установить Interbase на компьютере, на котором вы работаете. Я только установил драйвер на свой компьютер разработки.

Установка будет извлекать все необходимые файлы, необходимые для установки приложения для подключения к базе данных. Он также создаст readme ADO_NET 2_0 Драйвер для файла инсталляции и использования InterBase XE.htm. ВАЖНОЕ ПРИМЕЧАНИЕ: примеры подключения DB в этом файле справки 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 (из базы данных межбазисной базы данных)

Я нашел две строки соединения, которые сработали. Для подключения используйте одну из двух соединительных линий:

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

Остальное похоже на пример, который я дал ранее.

Как я уже упоминал, это работало на машинах Server 2012 и Windows 8.1 с установленной только Interbase.