crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QSQLITE запись в бд после выключения программы
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
lanz Дата 25.3.2015, 20:56
  Это файл журнала. Если вы читали ссылки, кторые я прислал то знаете что файл журнала удаляется после успешной транзакции.
Вам нужно
1. Начать транзакцию
2. Выполнить коммит
Эти два действия гарантируют, что ваши данные записаны в БД на физическом носителе.
STRATEG_lLTY Дата 25.3.2015, 3:03
  Что такое транзакция мне известно.
Проблема в том, что на конечном устройстве база данных не сохраняется сразу, а только после завершения(правильного) приложения.
А по ходу работы программа создаёт файл (название моей базы данных)-(сейчас не вспомню что именно, уточню на работе), например DB-(приписка).
Как я думал, это и есть файл транзакций, но мною они в явном виде не включались.
lanz Дата 23.3.2015, 23:03
 
Цитата
Но мне не нужны тразакции, мне надо от них избавиться.

Зачем?
Цитата
Если я вызываю 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 Дата 23.3.2015, 22:24
 
Цитата(lanz @ 6.3.2015, 1:17) *
Попробуйте использовать transaction() и commit()

Но мне не нужны тразакции, мне надо от них избавиться.
Если я вызываю commit он постоянно выдаёт false и ясное дело проблему это не решает.
lanz Дата 6.3.2015, 0:17
  Попробуйте использовать transaction() и commit()
http://qt-project.org/doc/qt-4.8/qsqldatab...tml#transaction
STRATEG_lLTY Дата 5.3.2015, 21:42
  Использую QT4 и вот такое подключение к бд
dbase = QSqlDatabase::addDatabase("QSQLITE");
    dbase.setDatabaseName("./DB");
    if (!dbase.open())
    {
        qDebug() << "Non sqllite!\r\n";
    }
    a_query=QSqlQuery();


Проблема в следующем, какие бы манипуляции с бд не осуществлялись, файл перезаписывается только после выключения программы
мне же необходимо, что бы это происходило сразу, так как устройство будет отключаться путём его обесточивания.
Подскажите как это сделать.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 18:50