Код в файле справки работает во многих ситуациях, но не во всех, особенно на машинах с 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 Драйвер для InterBase XE, файл Инструкции по установке и использованию .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.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();