AndroidHalfNoob Опубликовано 12 сентября, 2015 Поделиться Опубликовано 12 сентября, 2015 (изменено) Делаю все по инструкции http://docwiki.embarcadero.com/RADStudio/XE7/en/Mobile_Tutorial:_Using_FireDAC_and_SQLite_(iOS_and_Android) да диске F создал базу Baza.db через программу SQLiteExpert Добавил все нужные компоненты FDConnection, FDQuery1, FDGUIxWaitCursor1, Grid1 В FDConnection1 прописал путь в базе на компьютере F:\Baza.db (рис 1) Включил в проект саму базу (рис 2) Задеплоил (рис 3) (надо ли нажимать деплой при добавлении файла и указания пути?синий круг) Скинул на сам телефон файл базы на всякий случай. Прописал событие FDConnection1BeforeConnect {$IF DEFINED(ANDROID)} FDConnection1.Params.Values['Database'] :=TPath.Combine(TPath.GetDocumentsPath, 'Baza.db'); {$ENDIF} Добавил uses System.IOUtils; и результат..... запускается приложение на телефоне и просто черный экран Изменено 12 сентября, 2015 пользователем Andrey Efimov Цитата Ссылка на комментарий
0 Alex Bozhko Опубликовано 12 сентября, 2015 Поделиться Опубликовано 12 сентября, 2015 (изменено) В папке <Ваше приложение>\Android\Debug\<название приложения>\bin найдите файл с расширением .apk. Это обычный архив. Откройте его с помощью WinZip или WinRar и поищите файл Baza.db. Если его там нет, то это глюк XE8. Деплоймент манагер пытается строить относительный путь к базе. И, как я понимаю, делает это не совсем корректно. Возможно причина в этом. Кстати, в корень диска F: положить БД - вообще плохая идея. Всякие UAC-и могут не дать доступ к файлу. Поэтому просто под корнем Вашего приложения создаете папку (например, db) и помещаете базу туда. Должно заработать... Изменено 12 сентября, 2015 пользователем Alex Bozhko Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 (изменено) Кстати, в корень диска F: положить БД - вообще плохая идея. Всякие UAC-и могут не дать доступ к файлу. Поэтому просто под корнем Вашего приложения создаете папку (например, db) и помещаете базу туда. Должно заработать... Базу пробовал не только в корень класть. F:\Baza\Baza.db результат тот же. сейчас еще гляну то что вы рекомендовали. Посмотрим что там творится. Изменено 12 сентября, 2015 пользователем AndroidHalfNoob Цитата Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 12 сентября, 2015 Модераторы Поделиться Опубликовано 12 сентября, 2015 1. UAC 2. В Remote Path не указывается имя файла, только путь ".\assets\internal\" (имя файла указано в столбце Remote Name) Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 Действительно. прошерстил весь apk нет там базы. в ручную ее можно добавить в архив? или именно деплоить надо? Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 2. В Remote Path не указывается имя файла, только путь ".\assets\internal\" (имя файла указано в столбце Remote Name) Тоже пробовал ".\assets\internal\" без ковычек. тоже не работает. в конце дописывал имя базы так как при поиске в нете встречал примеры где в удаленном пути указывалось имя базы Цитата Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 12 сентября, 2015 Модераторы Поделиться Опубликовано 12 сентября, 2015 хм.. странно, у меня в XE8 такой проблемы не было... Но я обычно создаю папку "database" в папке с проектом, туда кладу файл "имя.db" и деплою его в папку ".\assets\internal\" (имя там точно писать не надо) Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 (изменено) переместил базу в F:\a\bd\Baza.db сделал Деплойт .\assets\internal\ все равно черный экран В проекте добавилась папка F:\a\Android\Debug\aaa\assets\internal. там появилась baza.db такая же структура и в АПК но приложение по прежнему запускается с черным экраном. Изменено 12 сентября, 2015 пользователем AndroidHalfNoob Цитата Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 12 сентября, 2015 Модераторы Поделиться Опубликовано 12 сентября, 2015 ну вот, базу нашли... Проблемы связанные с чёрным экраном могут быть вообще не связаны с базой. FDConnection1.Connected = чему равно. Ставьте False, а в коде уже меняйте на True. Была такая проблема, тоже был чёрный экран при запуске приложения (только в xe7 вроде...) Цитата Ссылка на комментарий
0 #WAMACO Опубликовано 12 сентября, 2015 Поделиться Опубликовано 12 сентября, 2015 Добавьте на форму компонент FDSysSqliteDriver (под рукой нет дельфи, точно не помню как называется) Это драйвер необходимый! Andrey Efimov 1 Цитата Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 12 сентября, 2015 Модераторы Поделиться Опубликовано 12 сентября, 2015 Добавьте на форму компонент FDSysSqliteDriver (под рукой нет дельфи, точно не помню как называется) Это драйвер необходимый! Точно, TFDPhysSQLiteDriverLink и сразу TFDGUIxWaitCursor Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 (изменено) Andrey Efimov в самом компоненте стоял ТРУ поставил False и в коде {$IF DEFINED(ANDROID)} DBPath := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'Baza.db'); {$ENDIF} FDConnection1.ConnectionString:= 'DriverID=SQLite;Database='+DBPath+';StringFormat=Unicode;LockingMode=Normal'; FDConnection1.Connected:=True; wamaco нашел компонент FDPhysSQLiteDriverLink TFDGUIxWaitCursor уже стоит давно Изменено 12 сентября, 2015 пользователем AndroidHalfNoob Цитата Ссылка на комментарий
0 Модераторы Andrey Efimov Опубликовано 12 сентября, 2015 Модераторы Поделиться Опубликовано 12 сентября, 2015 И как, после проделанных операций, запускается? p.s. А версия среды какая? Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 ОООО уже что то белый экран. но Grid пустой. программно активирую компоненты FDConnection1.Connected:=True; FDQuery1.Active:= True; Цитата Ссылка на комментарий
0 #WAMACO Опубликовано 12 сентября, 2015 Поделиться Опубликовано 12 сентября, 2015 Вот теперь колдуйте с путями к базе! Коннектитесь не через коннекшстринг, а параметры прописывайте отдельно. Database LockingMode И т.д. Малейшая ошибочка в строке подключения через коннекшстринг и не будет эффекта! Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 Заработало!!! FDConnection1.Connected:=True; FDQuery1.Active:= True; вынес отдельно событие формы OnActivate До этого было в событии FDConnection1BeforeConnect Andrey Efimov 1 Цитата Ссылка на комментарий
0 AndroidHalfNoob Опубликовано 12 сентября, 2015 Автор Поделиться Опубликовано 12 сентября, 2015 Вот что получилось. ну и настройка компонентов как указано в мануале procedure TForm1.FDConnection1BeforeConnect(Sender: TObject); var DBPath: string; begin {$IF DEFINED(ANDROID)} DBPath := System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetDocumentsPath, 'Baza.db'); {$ENDIF} FDConnection1.ConnectionString:= 'DriverID=SQLite;Database='+DBPath+';StringFormat=Unicode;LockingMode=Normal'; end; procedure TForm1.FormActivate(Sender: TObject); begin FDConnection1.Connected:=True; FDQuery1.Active:= True; end; end. Kitty 1 Цитата Ссылка на комментарий
0 FAN Опубликовано 13 сентября, 2015 Поделиться Опубликовано 13 сентября, 2015 С переходом на Х возникла точно такая же проблема. База называлась ххх.db У меня rooted устройство, поэтому зашел в директорию программы и увидел, что размер ххх.db - 0 байт. Переименовал для андроида ххх.db в xxx.sqlite, изменил connection и deployment settings, и все заработало. Kitty 1 Цитата Ссылка на комментарий
Вопрос
AndroidHalfNoob
Делаю все по инструкции
http://docwiki.embarcadero.com/RADStudio/XE7/en/Mobile_Tutorial:_Using_FireDAC_and_SQLite_(iOS_and_Android)
да диске F создал базу Baza.db через программу SQLiteExpert
Добавил все нужные компоненты FDConnection, FDQuery1, FDGUIxWaitCursor1, Grid1
В FDConnection1 прописал путь в базе на компьютере F:\Baza.db (рис 1)
Включил в проект саму базу (рис 2)
Задеплоил (рис 3) (надо ли нажимать деплой при добавлении файла и указания пути?синий круг)
Скинул на сам телефон файл базы на всякий случай.
Прописал событие FDConnection1BeforeConnect
Изменено пользователем Andrey Efimov
Ссылка на комментарий
17 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.