• 0
drbond

Подключение к БД Firebird из Android

Вопросы

Пытаюсь соединиться с удалённой БД Firebird из приложения под Android. Прошу помочь мне с одним неясным моментом. А именно: где, по какому пути в приложении должна быть размещена клиентская библиотека?  Что прописать в deployment? Что прописать в свойстве ClientLibrary компонента UniConnection? Почему UniConnection не видит библиотеку libfbclient.so.3.0.3 когда я размещаю её в папке приложения?

Пытаюсь указывать путь к файлу для приложения:

procedure TForm2.FormCreate(Sender: TObject);
var
begin
UniConnection1.SpecificOptions.Values['ClientLibrary']:= TPath.Combine(TPath.GetDocumentsPath, 'libfbclient.so.3.0.3');
end;

В итоге получаю:

Screenshot_20180820-132427.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 ответов на этот вопрос

  • 1

Библиотеку нужно не забыть добавить в Deployment (release и debug).

У меня рядом с папкой проекта есть, т.е. на одном уровне, папка media, где лежат иконки, картинки, so-библиотеки и прочий мусор для деплоя.

В столбце Remote path указываем ".\assets\internal\db". Открываем "Project/Deployment", выбираем конфигурацию над таблицей,  жмякаем слева + и выбираем файл. Только обрати внимание ,что галочка слева должна быть отключена.

В проекте, в процедуре подключения к базе есть строка:

ClientLibrary := IncludeTrailingPathDelimiter(TPath.GetDocumentsPath) + 'db' + PathDelim + 'libfbclient.so.3.0.2';

ну или "'libfbclient.so.2'", в зависимости от версии Firebird сервера: 2.5 или 3.0.

Не забудь добавить в USES модуль System.IOUtils.

 

Сразу напишу, что Андроид, как и Линукс туповаты, поэтому подключиться к хост-машине с Firebird по имени компьютера не получится.

По крайне мере у меня не получилось.

Поэтому в качестве адреса (параметр "Data Source") выступает IP адрес.

 

Собираем строку подключения:

 

    UniConnectionFB.ConnectString := 'Provider Name=InterBase;' +
                                     'Data Source=' +     server +';' +
                                     'Database=' +        Database + ';' +
                                     'Port=' +            port +';' +
                                     'User ID=' +         Username +';' +
                                     'Password=' +        Password + ';'+
                                     'Client Library=' +  ClientLibrary + ';' +
                                     'Character Set='+    CharacterSet + ';' +
                                     'Use Unicode=True;Login Prompt=False';

 

Screenshot_40.png

Изменено пользователем x11

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Получается, что ".\assets\internal" соответствует "TPath.GetDocumentsPath"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Сделал всё по написанному. Ошибка прежняя. Не может загрузить библиотеку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

А вот когда я поставил "галочки" слева, то всё заработало! Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0
В 20.08.2018 в 21:06, drbond сказал:

А вот когда я поставил "галочки" слева, то всё заработало! Спасибо!

странно, у меня наоборот

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу