Перейти к содержанию
  • Регистрация
  • 0
Bio HaZaRD

Не запускается проект (FireDac + SQLite)

Вопрос

Всем привет!

Пишу проект на основе FireDac (TFDConnection, TFDQuery) + SQLite. На ПК с IDE программа запускается, а на других - нет. На ПК, без IDE, стоят все обновы.

Помогите разобраться, где проблема или посоветуйте другой компонент, который поддерживает SQLite. Заранее спасибо!

 

Примечания к файлу:

Windows-Problemberichtserfassung = Windows Problem Reporting

problem.png

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


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

Рекомендуемые сообщения

  • 1

На других ПК рядом с Вашим ехе-файлом нужно положить dll-библиотеку SQLite

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 1
16 часов назад, enatechno сказал:

На других ПК рядом с Вашим ехе-файлом нужно положить dll-библиотеку SQLite

Взять можно отсюда: http://www.sqlite.org/download.html

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


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

Большое спасибо за столь скорую реакцию.

Я перешёл на Qt и (на данный момент) не имею боли по поводу SQLite.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 1
2 часа назад, Bio HaZaRD сказал:

Большое спасибо за столь скорую реакцию.

Я перешёл на Qt и (на данный момент) не имею боли по поводу SQLite.

А какая разница на чем писать, база данных все равно требует библиотеку доступа!

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 минуты назад, Vitaldj сказал:

А какая разница на чем писать, база данных все равно требует библиотеку доступа!

Не знаю в чём проблема в c++ builder, но в Qt всё работает

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


Ссылка на сообщение
Поделиться на другие сайты
  • 1
Только что, Bio HaZaRD сказал:

Не знаю в чём проблема в c++ builder, но в Qt всё работает

На том компе на котором до этого не работало на QT работает? Это может причиной двух случаев. Для доступа из QT к sqlite посредством статической встроенной библиотеки (как для студии на liteDAC), или QT просто кидает нужный dll.

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


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

Запиленное на Qt работает на других ПК. В конце концов, с приложением лежат все DLL. Приложение весит ~50 Мб. Это не особо удобно, учитывая тот факт, что в приложении все-лишь пару кнопок и текстовых полей.

В идеале хотелось бы вообще нативное приложение построить, без всяких прибомбасов))

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 1
1 минуту назад, Bio HaZaRD сказал:

Запиленное на Qt работает на других ПК. В конце концов, с приложением лежат все DLL. Приложение весит ~50 Мб. Это не особо удобно, учитывая тот факт, что в приложении все-лишь пару кнопок и текстовых полей

Ну вот, QT вам само ложит эту dll, вот и ответ.

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
7 минут назад, Vitaldj сказал:

Ну вот, QT вам само ложит эту dll, вот и ответ.

Подожду обновы, может исправят.

Спасибо всем за содействие!

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
9 минут назад, Bio HaZaRD сказал:

Подожду обновы, может исправят.

Спасибо всем за содействие!

Исправят что? Вы сами должны рядом с экзешником положить dll от sqlite!

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
6 минут назад, Vitaldj сказал:

Исправят что? Вы сами должны рядом с экзешником положить dll от sqlite!

Я клал 32 и 64 бит. Переименовывал в sqlite.dll, sqlite3.dll. Клал sqlite3.dll в папку System32 (здесь sqlite3 32 бит) и SysWOW64 (sqlite3 64 бит). Прога даже не показывалась. А когда я удалял компоненты FireDac с формы в билдере, то приложение запускалось без проблем

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 минуты назад, Bio HaZaRD сказал:

Я клал 32 и 64 бит. Переименовывал в sqlite.dll, sqlite3.dll. Клал sqlite3.dll в папку System32 (здесь sqlite3 32 бит) и SysWOW64 (sqlite3 64 бит). Прога даже не показывалась. А когда я удалял компоненты FireDac с формы в билдере, то приложение запускалось без проблем

надо рядом с exe приложения

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


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

Один раз показываю.

private
  FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink; //компонент, кинь на форму

...........


Begin
  FDPhysSQLiteDriverLink1 := TFDPhysSQLiteDriverLink.Create(self); // либо создай в ранТайме
  FDPhysSQLiteDriverLink1.VendorLib := 'full path to you sqlite.dll'; // укажи путь к библиотеке

 

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

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


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

Там нужно модуль phys вроде подрубить, где то на форуме было

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


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

Где создается/размещается файл базы данных? Проблема может быть в правах доступа. Попробуйте запустить свою программу на другом ПК с правами администратора. 

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
2 часа назад, Vitaldj сказал:

надо рядом с exe приложения

Я ложил с exe.

35 минут назад, enatechno сказал:

Где создается/размещается файл базы данных? Проблема может быть в правах доступа. Попробуйте запустить свою программу на другом ПК с правами администратора. 

База находится в папке рядом с exe, а exe – на D:/.... Я запускал на другом пк с правами и без прав админа.

 

2 часа назад, rareMax сказал:

Один раз показываю.


private
  FDPhysSQLiteDriverLink1: TFDPhysSQLiteDriverLink; //компонент, кинь на форму

...........


Begin
  FDPhysSQLiteDriverLink1 := TFDPhysSQLiteDriverLink.Create(self); // либо создай в ранТайме
  FDPhysSQLiteDriverLink1.VendorLib := 'full path to you sqlite.dll'; // укажи путь к библиотеке

 

Также пробовал бросать этот компонент – без результатно.

 

 

Завтра ещё раз сделаю по вашим советам на чистой винде

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

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


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

Дамы и Господа,

в общем не знаю из-за чего, но после переустановки винды на билд 15002 и установки Rad Studio, скачанной с сайта embarcadero, всё скомпелировалось и заработало.

Итак ход разработки проги:
создав интерфейс, кинул FDConnection, FDQuery и настроил их. После закинул на ПК без IDE. Убидившись в том, что в System32 и SysWOW64 не лежит sqlite3.dll, запустил прогу и.... всё заработало.

Мой вывод по поводу sqlite: C++ Builder впаивает sqlite в exe, тем самым никакие DLL с прогой ложить не нужно, а вот БД надо.

 

Ещё один вопрос про FireDac: как программно указать относительный путь к БД (sqlite) для компонента FDConnection?

 

Всех благодарю за помощь и содействие.

Основная проблема решена! ))

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
14 минут назад, Bio HaZaRD сказал:

Убидившись в том, что в System32 и SysWOW64 не лежит sqlite3.dll, запустил прогу и.... всё заработало

Поверьте, FireDac не имеет встроенного механизма доступа с sqlite. То есть, нужна dll. Все таки она где-то у вас лежит))

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
Только что, Vitaldj сказал:

Поверьте, FireDac не имеет встроенного механизма доступа с sqlite. То есть, нужна dll. Все таки она где-то у вас лежит))

Ясно, буду искать и тестировать. Может на виртуалке что-нибудь выясню

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
4 часа назад, Andrey Efimov сказал:

Читайте правила форума. Один вопрос - одна тема.

Вас понял.

 

В общем прога запускается, но к сожалению проблема с БД не решина.

Компоненту FDConnect в свойствах был присвоен путь к базе данных. Соответственно тот путь, который указан в свойствах Компонента статичен и не будет совпадать с путём, где будет лежать прога на другом ПК. Я же хочу чтобы путь определялся динамически.

Методом тыка понял, что FireDac не может программно присвоить путь к БД объекту TFDConnect *Conn.

void __fastcall TMainForm::FormShow(TObject *Sender) {
	// TFDConnection *Conn
	Conn->DriverName = "SQLite";
	Conn->Params->Values['Database'] = ExtractFilePath(Application->ExeName) +
		"psalms.db";
	Conn->Open();
}

То-есть после запуска проги не по пути, по которому я указал в компонете, прога выдаёт ошибку: База данных не найдена.

 

Прошу помочь понять мне, как динамически присвоить путь к БД.

Заранее благодарю.

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


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

Прикладывайте тестовый проект - так проще разбираться в чем у вас проблема

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


Ссылка на сообщение
Поделиться на другие сайты
  • 0
52 минуты назад, Rusland сказал:

Прикладывайте тестовый проект - так проще разбираться в чем у вас проблема

Спасибо вам за ваше сообщение, оно подало мне отличную идею, которая наконец решила мою проблему.

 

Ещё раз моя проблема:
FDConnection не мог подключится к БД на чужом ПК с любово места на HDD. Эта проблема заключалась в том, что в компоненте, кинутой на форму, я указывал статический путь к базе данных.

Решение:
Удалить путь к файлу в компонете FDConnection и программно указать его, например в методе формы FormShow или FormCreate.

 

Ещё раз всем спасибо за понимание и поддержку!
С уважением Владимир

test.zip

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


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Похожий контент

    • От ComAlex
      Goоgle Play перестает поддерживать 32-bit Android-приложения c 01.08.2019.
      А выкладывать в Goоgle Play новые УЖЕ нельзя.
      Последние же Delphi XE не позволяют создать 64-bit Android-приложения.
      Кто знает, когда появится новая версия с поддержкой 64 - bit? Говорили, что в конце лета, но лето кончилось
    • От estra
      FDQuery1.SQL.Text := 'select !x from dual'; FDQuery1.Macros.Clear; with FDQuery1.Macros.Add do begin Name := 'X'; Value := 'DUMMY'; end; FDQuery1.Prepare; Как получить результат prepare (запрос вида 'select DUMMY from dual')?
    • От estra
      Привет всем форумчанам!
      Нужна Ваша помощь. Есть пакет в ORACLE с глобальными переменными, типа:
      CREATE OR REPLACE PACKAGE GLOBALS IS
        BranchId NUMBER;
      -- 
      END GLOBALS;
      Вопрос: как получить значение переменных из пакета?
       
    • От sulion
      Коллеги, добрый день!
      Вопрос на засыпку - помогите пожалуйста, чего мне не хватает для успешного запуска?
      Список dll файликов прикрепляю внизу письма, Oracle 12.2 клиент стоит, PL/SQL Developer 12 использую каждый день
       
      Симптомы:
      Из хорошего - FireDAC Explorer успешно видит все нужные мне БД - и таблицы, и пакеты и т.д.
       
      В Delphi XE7 приложение работало успешно. Delphi 10.2.3 подчёркивает два модуля. Если эти два модуля закомментарить, то - компилирует успешно, но не может подцепиться ни к одной БД Oracle
       
      Создал пустое приложение, в него положил TFDConnection, драйвер Oracle он не видит
       
      Что уже пробовал:
      Вчера поставил все dll. Сегодня поставил Delphi 10.3.1 Architect Trial (на месяц), в нём проблема воспроизводится. Ещё раз переустановил драйвер Oracle.
       
      Что ещё можно сделать?
       
       
      Обещанный список dll:
      oci.dll
      ocijdbc12.dll
      ocijdbc12.sym
      ociw32.dll
      ociw32.sym
      ojdbc8.jar
      oramysql12.dll
      oramysql12.sym
      orannzsbb12.dll
      orannzsbb12.sym
      oraocci12.dll
      oraocci12.sym
      oraocci12d.dll
      oraocci12d.sym
      oraociei12.dll
      oraociei12.sym
      oraons.dll
      orasql12.dll
      orasql12.sym
       
       
       

      23.7z Request.7z
       
    • От x11
      При попытке подключиться к базе данных SQLite на эмуляторе с Android  7 получаю исключение:
      Delphi Tokyo + UniDAC 7.
      Эмулятор какой-то неполноценный?
    • От brunnengi
      Здравствуйте.
      Требуется программа на андроид с набором кнопок со следующем функционалом:
      1. Кнопка1 - создать базу в test.sqlite (в том месте где доступ к нему есть только у самого приложения (имею ввиду если это не ROOT телефон, при рут и так всё понятно)
      2. Кнопка2 - создать таблицу в базе test.sqlite с названием "TblTest01" (с разным набором полей на своё усмотрение)
      3. Кнопка3 - создать таблицу в базе test.sqlite с названием "TblTest02" (с разным набором полей на своё усмотрение)
      4. Кнопка4 - Добавить строку в таблицу "TblTest01" (любой набор данных на ваших усмотрение)
      5. Кнопка5 - Удалить строку в таблице "TblTest01" (по любому ключу на ваше усмотрение)
      6. Кнопка6 - Изменить строку в таблице "TblTest01" (по любому ключу и любое значение на ваше усмотрение)
       
      Приложение должно иметь фоновый сервис, который должен получать данные с сервера и добавлять их в базу test.sqlite в таблицу "TblTest02".
      При получение новый данных, сервис должен показать в "шторке" сообщение, по клику на которую открывается само приложение с визуальной частью.
      Т.е. если визуально приложение закрыто, выгружено, не запущено или запущено, фоновый процесс должен сам делать запросы к серверу и добавлять новые данные в базу, если они есть/поступили
      Приложение должно запускаться вместе с системой, после перезагрузки и т.д.
      Использовать только те компоненты что доступны в самой среде из коробки.
      Часть где делается запрос к серверу должен иметь timeout равный 20 секундам.
      Сервис должен грамотно делать запросы к серверу как положено в Андроид приложениях. 
      Серверная часть мне не нужна, можете для теста сами эмулирвать эти процессы.
       
       
      -----
      ЦЕНА: 2500р.
      СРОКИ: Не горит, но в целом где то дней 7 есть
      Перечисляю на QIWI, ЯД, Сбербанк, короче куда скажите.
    • От striker
      Добрый день!
      Работаю с MySQL
      Подключаюсь через FireDac.
      FDQuery+FDConnecton+Bind+Grid
      Запрос выполняется моментально, но как только подключаю Grid - начинает висеть. Grid заполняется очень долго - секунд 12-15.
      Причем результат запроса - всего 230 строк, хоть и join присутствует.
      Куда копать? Может дело быть именно в FMX?
    • От notricky
      Суть вопроса в заголовке.
      Есть ли какие-то настройки у базы или FireDAC чтобы в английской системе (винда 7) русский текст отображался не вопросами, а русским текстом?
      Настройки у БД UTF-8.
    • От Clio
      Добрый день !
      В приложении я использую базу SQLite (полt, содержащие дату и время тип REAL) . В TFDQuery я описал это поле - тип Float и через LiveBindings подключил к TGrid (Date Column). 
      Но в гриде отображается только год, а не полное время. 
      Подскажите, пожалуйста, как необходимо настроить поле в Query и TGrid, чтобы дата и время отображалась правильно.
  • Последние посетители   0 пользователей онлайн

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

×
×
  • Создать...