QSQLITE запись в бд после выключения программы |
Здравствуйте, гость ( Вход | Регистрация )
QSQLITE запись в бд после выключения программы |
STRATEG_lLTY |
5.3.2015, 21:42
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 21.7.2014 Пользователь №: 4192 Спасибо сказали: 0 раз(а) Репутация: 0 |
Использую QT4 и вот такое подключение к бд
Проблема в следующем, какие бы манипуляции с бд не осуществлялись, файл перезаписывается только после выключения программы мне же необходимо, что бы это происходило сразу, так как устройство будет отключаться путём его обесточивания. Подскажите как это сделать. |
|
|
lanz |
6.3.2015, 0:17
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Попробуйте использовать transaction() и commit()
http://qt-project.org/doc/qt-4.8/qsqldatab...tml#transaction |
|
|
STRATEG_lLTY |
23.3.2015, 22:24
Сообщение
#3
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 21.7.2014 Пользователь №: 4192 Спасибо сказали: 0 раз(а) Репутация: 0 |
|
|
|
lanz |
23.3.2015, 23:03
Сообщение
#4
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Цитата Но мне не нужны тразакции, мне надо от них избавиться. Зачем? Цитата Если я вызываю commit он постоянно выдаёт false и ясное дело проблему это не решает. Конечно, если вы не начали транзакцию он вернет false. Здесь описывается что такое транзакция: http://www.tutorialspoint.com/sqlite/sqlite_transactions.htm нам важно свойство Цитата Durability: ensures that the result or effect of a committed transaction persists in case of a system failure. Почитайте еще вот это: https://www.sqlite.org/atomiccommit.html И вот это: https://www.sqlite.org/wal.html |
|
|
STRATEG_lLTY |
25.3.2015, 3:03
Сообщение
#5
|
Новичок Группа: Новичок Сообщений: 7 Регистрация: 21.7.2014 Пользователь №: 4192 Спасибо сказали: 0 раз(а) Репутация: 0 |
Что такое транзакция мне известно.
Проблема в том, что на конечном устройстве база данных не сохраняется сразу, а только после завершения(правильного) приложения. А по ходу работы программа создаёт файл (название моей базы данных)-(сейчас не вспомню что именно, уточню на работе), например DB-(приписка). Как я думал, это и есть файл транзакций, но мною они в явном виде не включались. |
|
|
lanz |
25.3.2015, 20:56
Сообщение
#6
|
Старейший участник Группа: Участник Сообщений: 690 Регистрация: 28.12.2012 Пользователь №: 3660 Спасибо сказали: 113 раз(а) Репутация: 8 |
Это файл журнала. Если вы читали ссылки, кторые я прислал то знаете что файл журнала удаляется после успешной транзакции.
Вам нужно 1. Начать транзакцию 2. Выполнить коммит Эти два действия гарантируют, что ваши данные записаны в БД на физическом носителе. |
|
|
Текстовая версия | Сейчас: 28.3.2024, 16:16 |