Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 12
1
SQLite

Файл базы данных SQLite лежит в папке с програмой

20.06.2016, 00:52. Показов 2956. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как сообщить что файл бд sqlite находится в папке с програмой? Потому как при переносе програмы на другой пк пишет что то вроде не удается найти файл. При создании програмы использовал компоненты FDConection, FDQuery, DataSource.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.06.2016, 00:52
Ответы с готовыми решениями:

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

Восстановить поврежденный файл базы данных SQLite (сделать дамп запароленного файла базы данных)
Вообщем не понятно после чего перестал открываться файл базы данных с ошибкой - "database disk...

wamp mysql где файл базы данных лежит?
Подскажите пожалуйста где должен находиться файл базы данных после создания... Использую xamp,...

Где хранится файл базы данных SQLite на устройстве?
Здравствуйте друзья! Где храниться файл базы данных SQLite на устройстве или может этот файл...

12
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,658
Записей в блоге: 14
20.06.2016, 04:55 2
Вычислить абсолютный путь к файлу и задействовать его.
0
5785 / 4527 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
20.06.2016, 05:51 3
путь где лежит программа
ExtractFilePath(paramStr(0))
остается только добавить имя файла
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 12
20.06.2016, 10:19  [ТС] 4
Написал следующий код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm2.FormCreate(Sender: TObject);
const
ConnectionString = 'Database=%s\strh.db;  DriverName:=sQLite ';
begin
FDConnection1.Connected:=false;
FDConnection1.ConnectionString:='DriverName.SQLite; Database='+ ExtractFilePath(Application.ExeName)+'strh.db;';
 
 FDConnection1.Connected:=true;
 FDQuery1.Open;
 FDQuery2.open;
 FDQuery3.open;
 FDQuery4.open;
 FDQuery5.open;
 FDQuery6.open;
В итоге выбивает такую ошибку:

Что я делаю не так ?
Миниатюры
Файл базы данных SQLite лежит в папке с програмой  
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,658
Записей в блоге: 14
20.06.2016, 10:25 5
Попробуйте путь к файлу БД экранировать/заключить в кавычки. Внутри строки, да.

Добавлено через 3 минуты
Вместо строки подключения можно, вроде бы, задавать параметры другим способом:
http://docwiki.embarcadero.com... ion.Params
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 12
20.06.2016, 10:40  [ТС] 6
Сейчас через Delphi она запускается, но, при переносе программы с файлом БД в другую папку выбивает ошибку
Миниатюры
Файл базы данных SQLite лежит в папке с програмой  
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,658
Записей в блоге: 14
20.06.2016, 10:42 7
Строку подключения выведите на экран перед самим подключением. Что там будет написано?
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 12
20.06.2016, 10:47  [ТС] 8
Простите, но я не понял что нудно сделать
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,658
Записей в блоге: 14
20.06.2016, 10:48 9
Перед вот этим
Delphi
1
FDConnection1.Connected:=true;
получите сформированную строку подключения, и покажите её в MessageBox.
0
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 12
20.06.2016, 10:57  [ТС] 10
вот такая строка подключения
Delphi
1
2
3
4
5
6
7
with FDConnection1.Params do
 begin
 add ('DriverID=SQLite')   ;
 add ('Database='+ ExtractFilePath(Application.ExeName)+'%s\strh.db;') ;
 end;
 FDConnection1.Connected:=true;
end;
0
Эксперт .NET
10566 / 6490 / 1506
Регистрация: 25.05.2015
Сообщений: 19,658
Записей в блоге: 14
20.06.2016, 11:09 11
Я не код прошу показать, а ту строку, что сформирована программно во время выполнения.
Тут уже видно, что кавычек нет. А в рантайме может быть что-то ещё не правильное выявится.

Добавлено через 10 минут
Надо убедиться, что полный путь, используемый драйвером, существует. Что файл там лежит и доступен для записи.
И ещё, нет ли в пути к файлу пробелов и русских букв. От пробелов в других системах обычно спасают кавычки.
0
5395 / 4323 / 1060
Регистрация: 29.08.2013
Сообщений: 27,129
Записей в блоге: 3
20.06.2016, 11:24 12
Лучший ответ Сообщение было отмечено sergsx1 как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var c:TFDConnection
begin
  c:=TFDConnection.Create(nil);
  c.Connected:=False;
  c.Params.Clear;
  c.Params.Values['Login Prompt']:='False';
  c.Params.Values['DriverID']:='SQLite';
  c.Params.Values['DriverName']:='SQLite';
  c.Params.Values['Database']:=ExtractFilePath(paramstr(0))+'shop_backup.sqlite';
  c.Params.Values['lockingmode']:='Normal';
  c.Params.Values['JournalMode']:='WAL';
  c.Params.Values['Synchronous']:='Normal';
  c.Params.Values['BusyTimeout']:='20000';
  c.Params.Values['SharedCache']:='False';
  c.Params.Values['CacheSize']:='30000';
 
 try
    c.Connected:=True;
  except
    on E: EFDDBEngineException do
      case E.Kind of
        ekUserPwdInvalid: ; // user name or password are incorrect
        ekUserPwdExpired: ; // user password is expired
        ekServerGone: ;     // DBMS is not accessible due to some reason
        ekOther: ;//The error does not fall into any of the categories listed 
     else
        result:=False;              // other issues
      end;
  end;
Добавлено через 2 минуты
читать до обеда тут
embarcadero.com
1
0 / 0 / 0
Регистрация: 12.06.2016
Сообщений: 12
20.06.2016, 11:49  [ТС] 13
Где ее найти? и что это такое ?

Добавлено через 19 минут
Большое спасибо! Все работает!
0
20.06.2016, 11:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2016, 11:49
Помогаю со студенческими работами здесь

При нажатии на кнопку запустить файл который лежит в проекте в папке Resource
Доброй ночи. Помогите пожалуйста. Мне надо при нажатии на кнопку запустить файл который лежит в...

Файл лежит в папке 'db/' Пытаюсь загрузить его в массив, но не пойму в чем ошибка?
Файл лежит в папке 'db/' Пытаюсь загрузить его в массив, но не пойму в чем ошибка? Переменная...

Файл: Как с помощью Python записать (а не перезаписать) данные из базы SQLite в файл lex.txt.
Помогите с разработкой части проекта, пожалуйста! Есть файл db.sqlite в котором таджикские слова:...

Написать функции для считывания данных о выбранных сущностях из базы данных SQLite
Здравствуйте, помогите доделать программу. Надо написать функции для считывания данных о...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru