• 0
gelo1

Почему не видны изменения в файле базы SQLite

Вопрос

Здравствуйте уважаемые члены сообщества.
Пожалуйста подскажите ответ на такой вопрос.
Почему после процедуры Ввести приложения для ОС Андроид:

//Ввести
procedure TForm_Glavn_ZapKnijka.Button_Vvod_ParolClick(Sender: TObject);
begin
try
Query_Parol.Insert;
Query_Parol.FieldByName(‘Parol’).AsString:=Edit_Parol.Text;
Query_Parol.Post;
Query_Parol.Refresh;

Query_Zabyl.Insert;
Query_Zabyl.FieldByName(‘Vopros’).AsString:=ComboBox_Vopros.Items.Text;
Query_Zabyl.FieldByName(‘Otvet’).AsString:=Edit_Otvet.Text;
Query_Zabyl.Post;
Query_Zabyl.Refresh;

Showmessage(‘Введено.’);
Label1.Text:=Query_Parol.FieldByName(‘Parol’).AsString;
except
on e: Exception do
begin
Showmessage(‘Ошибка ввода. Попробуйте ещё раз.: ‘+e.Message);
end;
end;
end;


В Label1 появляется нужный текст а в самой базе DB.db3 пусто? Хотя подключение к файлу базы без ошибок. Проверяю в обоих файлах в папке проекта и в папке \assets\internal. Все поля пусты.

С Уважением. Олег.

Изменено пользователем Andrey Efimov
Добавлен тег "Код"

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


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

20 ответов на этот вопрос

  • 0

Возможно, что транзакцию открыли, но не подтвердили. (commit) 

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


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

Здравствуйте wamaco.

СпасиБО за ответ.

Поясните пожалуйста подробнее что за commit. Мне известно только past.

С Уважением. Олег.

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


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

Визуальные компоненты портят начинающих программеров...

Query_Parol - это что? DBTable? Тексты запросов в студию.

и транслитерация - плохой тон, почему бы не tbPassword?

Изменено пользователем Камышев Александр
Равиль Зарипов (ZuBy) понравилось это

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


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

Здравствуйте Александр.

СпасиБО за ответ.

Query_Parol это не видимый компонент TFDQuery. Я уже так пробовал заносить:

Query_Parol.SQL.Text := 'INSERT INTO Tab_Parol (Parol) VALUES (:P)';
 Query_Parol.ParamByName('P').Value := Edit_Parol.Text;
 Query_Parol.ExecSQL;
 Query_Parol.Transaction.Commit;
 Query_Parol.Refresh;

и так:

Query_Parol.Insert;
 Query_Parol.FieldByName('Parol').AsString:=Edit_Parol.Text;
 Query_Parol.Post;
 Query_Parol.Refresh;

ничего не вижу в файле базы архива apk.

Подскажите что не так.

С Уважением. Олег.

Изменено пользователем Andrey Efimov
Добавлен тег "Код"

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


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

ничего не вижу в файле базы архива apk.

Чего?

Если после insert сделать select, то что выдает?

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

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


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

ничего не вижу в файле базы архива apk.

а при чем тут файл базы данных в APK? Вы его деплоите? 

если да, смотреть надо файл БД не в APK, а по пути куда вы его поместили, после установки приложения...

 

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


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

Здравствуйте.

Да деплою. Смотрю файл и там тоже откуда деплою. Пусто. Не знаю где посмотреть. В самом приложении всё нормально. Видны данные в гриде. Я их и дополняю и удаляю из приложения. Но посмотреть как в Win в Accesse нигде не могу. Уж не знаю как быть.

С Уважением. Олег.

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


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

Чего?

Если после insert сделать select, то что выдает?

Здравствуйте Rusland.

Я не понял Вашего вопроса. Поясните пожалуйста.

С Уважением. Олег.

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


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

@gelo1

Apk - это инсталляционный архив

почему там что-то должно меняться??

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


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

Здравствуйте Крапоткин.

СпасиБО за ответ.

Я задеплоил файл базы от сюда ... \Android\Debug\Project_ZapKnijka\assets\internal\. Правильно ли я понимаю что этот файл базы должен поменяться?

Если нет. Тогда подскажите где же запрятался файл базы который меняется?

С Уважением. Олег.

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


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

Как все запущено... deploy означает разместить на мобильном устройстве, изменения будут в файле на телефоне или планшете.

Посмотреть изменения можно или из программы, запросить 'select * from Tab_Parol', либо любой прогой из googleplay которая работает с sqlite.

Хотя нет, internal сторонними программами не посмотришь, надо из своей контролить.

Изменено пользователем Камышев Александр
Равиль Зарипов (ZuBy) и gelo1 понравилось это

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


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

Александр спасиБО.

Интуитивно я об этом догадывался но проверил по Вашему совету. Так оно и есть.

С Уважением. Олег.

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


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

мало того, если БД уже есть на устройстве, то повторный деплой не перезапишет ее чтобы не терять данные

предполагается, что программист должен сам предусмотреть механизм, который из старой БД сделает новую

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


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

Да Крапоткин. СпасиБО. Я раньше столкнулся с тем чтобы обновить базу приходилось полностью удалять приложение с телефона и устанавливать снова.

(Я служил под Екатеринбургом возле посёлка Белоярского в 1988/89гг. Интересно как там всё изменилось?)

С Уважением. Олег.

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


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

думаю, в белоярке ничего не изменится никогда ) а вот на самой станции реактор нового типа запустили. крутой )

gelo1 понравилось это

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


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

СпасиБо Крапоткин.

А можно еще вопрос по фильтрации данных в на телефоне в Андроиде.

На процедуру изменения Едита пишу так:

//Найти запись
procedure TForm_Tabl_Knijka.Edit_Poisk_ZapisChange(Sender: TObject);
begin
Query_Tab_Zapisy_Poisk.Active:=False;
Query_Tab_Zapisy_Poisk.SQL.Clear;
Query_Tab_Zapisy_Poisk.SQL.Add('SELECT * FROM Tab_Zapisy where Soderjanie like '+#39+Edit_Poisk_Zapis.Text+'%'+ #39+' ORDER BY Soderjanie'  );
Query_Tab_Zapisy_Poisk.Active:=True;
end;

В Видовсе всё отлично работает сразу при наборе отфильтровывает. На телефоне ноль внимания и даже когда нажимаю кривую стрелку.

Что у меня не так?

С Уважением. Олег.

Изменено пользователем Andrey Efimov
Добавлен тег "Код"

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


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

никогда не работал с SQLite

[update] 

а вы в курсе, что EditChange это только когда выйти из Edit ?

Изменено пользователем krapotkin
gelo1 понравилось это

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


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

СпасиБо. Попробую.

С Уважением. Олег.

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


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

Всем спасиБо. Разобрался. Тему можно закрывать.

С Уважением. Олег.

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


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

Решение: Делать в своём приложении скрытыми компонентами отслеживание изменения  в базе.

Олег.

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


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

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу