#delphi #interbase #delphi-10.4-sydney #iblite
#delphi #interbase #delphi-10.4-Сидней #iblite
Вопрос:
В Delphi 10.4.1 я пытаюсь создать приложение для Android, которое подключается к экземпляру Interbase, запущенному на моем ноутбуке (к которому я могу подключиться удаленно со своего рабочего стола). Я получаю исключение:
Проект Project6.apk вызвал исключение класса EIBNativeException с сообщением "[FireDAC] [Phys] [IBLite] Не удалось выполнить сетевой запрос на хост "192.168.1.58". Не удалось найти хост-машину. Неопределенный сервис gds_db / tcp.'.
Параметры подключения:
Database=192.168.1.58:C:Users PublicDocuments Embarcadero Studio 21.0Samples dataemployee.gdb Имя_пользователя= sysdba Пароль = мастер-ключ DriverID=IB
Все работает нормально, если я подключаюсь к локальной базе данных или запускаю приложение в Windows.
Я видел, как это демонстрировалось в XE7 (https://youtu.be/XAZQfYzvxHc?t=1384 ), но не могу заставить его работать в 10.4.1.
Что я делаю не так?
Комментарии:
1. Я предполагаю, что это потому, что Android не понимает C: . Возможно, вы сможете заставить его работать с именем файла UNC.
Ответ №1:
Если InterBase на вашем компьютере с Windows работает на экземпляре по умолчанию ‘gds_db’, то, вероятно, он использует сокет TCP на порту 3050. Попробуйте изменить URL-адрес базы данных вашего приложения для Android на следующий, чтобы он включал номер целевого порта 3050. Я предполагаю, что он не может автоматически разрешить имя ‘gds_db’ на Android, поскольку имя службы TCP-сокета не определено на Android. На настольных платформах, таких как Windows, Linux, macOS, установщик InterBase обновляет файл системных служб, чтобы обеспечить перевод имени ‘gds_db’ в 3050. Простое указание номера порта сокета TCP — это надежный способ нацеливания на конечную точку без необходимости разрешения имен.
Database=192.168.1.58/3050:C:UsersPublicDocumentsEmbarcaderoStudio21.0Samplesdataemployee.gdb
Комментарии:
1. Я не думал, что это сработает, но это действительно так.