Помогите разобраться в приложений с SQLite?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Помогите разобраться в приложений с SQLite?

Сообщение McLion »

Всем привет,

хочу научиться работать с БД и написал маленькую прогу. Так вроде все получилось, только не получается добавлять, редактировать и удалять записи.
Насколько я понимаю надо прописывать соответствующие команды в InsertSQL, UpdateSQL и DeleteSQL.

Не подскажите, что там прописать?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Смотря какие компоненты вы используете. А вообще-то про SQLite на форуме писалось много раз, воспользуйтесь поиском.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Снег Север писал(а):Смотря какие компоненты вы используете. А вообще-то про SQLite на форуме писалось много раз, воспользуйтесь поиском.


SQLite3Connection1 -> SQLTransaction1 -> SQLQuery1 -> DataSource1 -> (DBGrid1 + DBNavigator1 + DBEdit1)

Все родное.

Да я уже все переискал, до того и дошел, что на скрине... дальше нужна помощь.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Если у вас в SQLQuery1 стоит типа 'select * from tabel1' и для всех DB компонентов используется один и тот же DataSource1, то можно редактировать и добавлять по кнопкам навигатора, всё должно срабатывать автоматически.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

По идей да, но ... вот добавляю в DBGrid запись, нажимаю на галочку, вроде все ок. Прогу закрываю, открываю но ничего нет. А если что то в DBGrid записать, нажать на галочку и потом на Refresh - выдает ошибку
Must apply updates before refreshing data
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

McLion писал(а):...вот добавляю в DBGrid запись, нажимаю на галочку, вроде все ок. Прогу закрываю, открываю но ничего нет.

Надо перед закрытием проги (или перед закрытием SQLQuery1) написать:

Код: Выделить всё

SQLQuery1.ApplyUpdates;

чтобы добавленные в SQLQuery1 данные перенести в саму базу данных, которая на диске.

Добавлено спустя 2 минуты 2 секунды:
McLion писал(а):Must apply updates before refreshing data

А здесь, соответственно, сделать

Код: Выделить всё

SQLQuery1.ApplyUpdates;

перед Refresh, потому что Refresh заново считывает данные (добавленные) из файла БД.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Включите у SQLQuery1 в Options свойство sqoAutoApplyUpdates в true. И тогда программа сама сделает то, что написал товарищ постом выше.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Снег Север писал(а):Включите у SQLQuery1 в Options свойство sqoAutoApplyUpdates в true. И тогда программа сама сделает то, что написал товарищ постом выше.


Прости за банальность, но не нахожу Options...
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

McLion писал(а):Прости за банальность, но не нахожу Options...
Как это? В инспекторе объектов, сразу ниже Name. Еще не встречал такого, чтобы не было... :?
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Снег Север писал(а):
McLion писал(а):Прости за банальность, но не нахожу Options...
Как это? В инспекторе объектов, сразу ниже Name. Еще не встречал такого, чтобы не было... :?


Я загрузил скриншот... нету его, или я слепой.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Снег Север писал(а):В инспекторе объектов, сразу ниже Name. Еще не встречал такого, чтобы не было...

Вы не поверите, но у меня такого тоже нету. И именно в инспекторе объектов. Может быть Вы имели в виду ZQuery? ;-)
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Может, у меня версия свежее в СТ?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

McLion
Можно это дело в событие AfterPost засунуть, если только Вам не надо вносить данные с ужасающей быстротой.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Vadim писал(а):Надо перед закрытием проги (или перед закрытием SQLQuery1) написать:

Код: Выделить всё

SQLQuery1.ApplyUpdates;

чтобы добавленные в SQLQuery1 данные перенести в саму базу данных, которая на диске.



Ни хочу дураком казаться, но не помогает... вот что я сделал:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
  SQLQuery1.ApplyUpdates;
end;
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

Снег Север писал(а):Может, у меня версия свежее в СТ?

Не исключено. У меня мартовская - 48187.

Добавлено спустя 2 минуты 16 секунд:
McLion писал(а):но не помогает

А Post предварительно Вы не забыли сделать?
Ещё вариант - поставьте TSQLTransaction.Action в caCommit.
Ответить