• 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?

Изменено пользователем Камышев Александр

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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

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

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

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

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

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

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


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

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

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

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

Изменено пользователем Камышев Александр

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


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

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

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

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

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


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

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

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

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


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

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

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

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

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


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

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

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


Ссылка на сообщение
Поделиться на другие сайты
  • 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

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


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

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

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

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


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

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

Олег.

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


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

  • Последние посетители   0 пользователей онлайн

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