Лучший способ подключиться к Interbase 7.1 с помощью .NET C#
Вопрос
Не мог бы кто-нибудь, пожалуйста, объяснить наилучший способ подключения к базе данных Interbase 7.1 с использованием .NET / C #?
Приложение будет установлено на многих компьютерах конечных пользователей, так что чем меньше "дополнений" мне придется упаковать вместе с моим приложением, тем лучше.
Решение
CodeGear предлагает бесплатный драйвер ADO.NET 2.0 для зарегистрированных пользователей InterBase здесь:
http://cc.embarcadero.com/item/25497
Обратите внимание, что " зарегистрированные пользователи InterBase " включает бесплатную версию для разработчиков InterBase 2007 В загрузке говорится, что это на 2007 год, но он отлично работает с InterBase 7, и команда InterBase в CodeGear сказала мне, что у них нет проблем с людьми, использующими его для этой цели.
Я не рекомендую использовать драйвер, разработанный для Firebird, так как InterBase и Firebird имеют несколько разные синтаксисы SQL, а также отличаются и другими функциями. В частности, я думаю, что использование любого драйвера, зависящего от fbclient.dll с InterBase, является абсолютно опасным.
Другие советы
Я думаю, что поставщик Firebird .net такой же, как и моно. Оба отлично между прочим.
Код в файле справки работает во многих ситуациях, но не во всех, особенно на компьютерах с Windows 8.1, Windows Server 2012.
Убедитесь, что вы получаете последнюю версию InterBase_ADO.NET от embarcadero.Версия, до которой я обновился, была версией 16.0.4327.44959 Borland.Data.AdoDbxClient.dll .(Щелкните правой кнопкой мыши на файле, свойствах, деталях, чтобы увидеть номер версии).Установка также создает папку версии x64 для 64bit, хотя я ею не пользовался.Я нацелился на x86 без каких-либо проблем.
Установки ADO.NET не надо делать на каждой машине – нужно просто добавить файлы в свой проект и сервер Interbase, установленных на машину, на котором вы работаете.Я установил драйвер только на свой компьютер для разработки.
В ходе установки будут извлечены все необходимые файлы, которые вам нужно поместить в приложение для подключения к базе данных.Он также создаст файл установки и использования драйвера readme ADO_NET 2_0 для InterBase XE Instructions.htm. ВАЖНОЕ ЗАМЕЧАНИЕ: примеры подключения к БД в этом htm-файле справки не работают в 100% случаев.Смотрите мой пример кода ниже для получения решения.
Подключение ODBC не требуется.Список файлов, которые должны быть включены в ваш проект .NET и скопированы локально, следующий:
- Borland.Данные.AdoDbxClient.dll
- Borland.Data.DbxCommonDriver.dll
- Borland.Data.DBXInterBaseDriver.dll
- Борланд.Delphi.dll
- Борланд.VclDbRtl.dll
- Борланд.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();