flexit
-
Постов
5 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные flexit
-
-
Все же я вернулся к TFDConnection и выяснил следующее.
Перед установкой соединения при компиляции под Windows можно написать:
FDConnection1.Params.Values['DriverID']:='SQLite';
FDConnection1.Params.Values['Database']:= DBPath;илиFDConnection1.ConnectionString:='DriverID=SQLite;Database='+DBPath;Проблем не будет в обоих случаях.А вот под Андроид первый вариант выдает ошибку [FireDAC][stan][Def]-254. Definition [baseName] is not found in [],а второй - успешно работает.P.S. Только начал изучать разработку мобильных приложений в Delphi, но подобные 'милые особенности' на каждом шагу уже успели изрядно утомить. -
Попробовал использовать компонент TSqlConnection вместо TFDConnection c тем же самым кодом - ошибки при соединении не происходит. Придется использовать dbExpess вместо FireDAC.
И все же интересно, в чем же может быть проблема при работе с компонентом TFDConnection. Есть какие-нибудь идеи?
-
GetSharedDocumentsPath не работает
GetDocumentsPath работает
FDConnection1.Params.Values['Database'] := TPath.Combine(TPath.GetDocumentsPath, 'lbase.db');
Так я тоже пробовал и с тем же результатом. Изначально в Deloyment указывал .\assets\internal и использовал функцию GetDocumentsPath.
Потом попробовал указывать в Deloyment .\assets в качестве RemotePath и использовать функцию GetSharedDocumentsPath. В результате TFile.Exists показывает в обоих случаях, что файл базы присутствует, но ошибка все равно возникает.
TPath.Combine я тоже использовал.
-
Здравствуйте!
Для создания соединения использую TFDConnection.
Под Windows проблем нет, на планшете под Андроидом возникает ошибка:
[FireDAC][stan][Def]-254. Definition [lbase] is not found in [].
Физически база на устройстве присутствует, вижу ее в файловом менеджере и в коде проверяю наличие файла с помощью TFile.Exists.
Код:
procedure TForm5.FDConnection1BeforeConnect(Sender: TObject);var DBPath: string;begin{$IFDEF ANDROID}DBPath:=TPath.GetSharedDocumentsPath + PathDelim + 'lbase.db';{$ELSE}DBPath:='d:\test\lbase.db';{$ENDIF}if TFile.Exists(DBPath) thenShowMessage('File exist') elseShowMessage('File not exist');FDConnection1.Params.Values['Database']:= DBPath;end;procedure TForm5.Button1Click(Sender: TObject);beginFDConnection1.Connected:=true;end;
XE8, не могу установить соединение с базой Sqlite на устройстве под Android
в FireDAC
Опубликовано
Я тоже начинал с таких примеров и понимаю, что это штатный вариант.
Но у меня он не проходит, и думаю, что кривизна рук тут не при чем.
На форме у TFDConnection драйвер у меня тоже указан.
Но если я напишу в ConnectionString='Database='+DBPath, то TFDConnection не понимает, какой драйвер нужно использовать.
Ну а Params.Values['DriverID']:='SQLite' можно писать, или не писать - все равно в этом варианте при компиляции под Андроид возникает ошибка при попытке коннекта.