Лучший способ подключения к Interbase 7.1 с помощью .NET C#

Может ли кто-нибудь объяснить, как лучше всего подключиться к базе данных Interbase 7.1 с помощью .NET/C#?

Приложение будет установлено на многих компьютерах конечных пользователей, поэтому чем меньше «надстроек» мне придется упаковать с моим приложением, тем лучше.


person Community    schedule 20.10.2008    source источник


Ответы (4)


CodeGear предлагает бесплатный драйвер ADO.NET 2.0 для зарегистрированных пользователей InterBase здесь:

http://cc.embarcadero.com/item/25497

Обратите внимание, что «зарегистрированные пользователи InterBase» включают бесплатную версию InterBase 2007 Developers Edition. В загрузке сказано, что это для 2007 года, но он отлично работает с InterBase 7, и команда InterBase в CodeGear сказала мне, что у них нет проблем с людьми, использующими его для этой цели.

Я не рекомендую использовать драйвер, предназначенный для Firebird, поскольку InterBase и Firebird имеют несколько разные синтаксисы SQL, а также отличаются другими функциями. В частности, я считаю, что использование любого драйвера, зависящего от fbclient.dll, с InterBase откровенно опасно.

person Craig Stuntz    schedule 20.10.2008
comment
Спасибо - это сработало просто отлично. Пример кода C# также был включен в read me. - person ; 21.10.2008
comment
Из-за изменений в CodeCentral указанный URL-адрес больше не будет работать должным образом. Вместо этого используйте cc.embarcadero.com/item/25497. - person Cleggy; 02.10.2009
comment
Пример C# в файле справки работает во многих случаях, но работает не во всех случаях. Вам нужно использовать фабрику, и пример фабрики файлов справки также не работает. - person Rick cf; 27.10.2014


Я думаю, что провайдер Firebird .net такой же, как и в моно. Оба отличные кстати.

person horatio    schedule 20.10.2008
comment
Они не одинаковы. - person Rick cf; 27.10.2014

Код в файле справки работает во многих ситуациях, но не во всех, особенно на компьютерах с Windows 8.1, Windows Server 2012.

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

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

Установка извлечет все необходимые файлы, которые вам нужно поместить в ваше приложение для подключения к базе данных. Кроме того, будет создан файл readme ADO_NET 2_0 Driver for InterBase XE Installation and Usage Introduction.htm. ВАЖНОЕ ПРИМЕЧАНИЕ: примеры подключения к базе данных в этом 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 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();
person Rick cf    schedule 27.10.2014