Автор: bynet 20.7.2010, 11:20
Открываю БД. (QSQLITE) База отображается в таблице. В таблице делаю изменение. После закрытия программы изменения не сохраняются. Как правильно сделать сохранения БД?
Код:
CODE
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("dataCompanyDB.db");
db.open();
model = new QSqlRelationalTableModel(this);
model->setTable("company");
model->select();
model->setHeaderData(0, Qt::Horizontal, QString::fromLocal8Bit("Номер"));
model->setHeaderData(1, Qt::Horizontal, QString::fromLocal8Bit("Название"));
model->setHeaderData(2, Qt::Horizontal, QString::fromLocal8Bit("Адрес"));
model->setHeaderData(3, Qt::Horizontal, QString::fromLocal8Bit("УНП"));
model->setHeaderData(4, Qt::Horizontal, QString::fromLocal8Bit("Банк"));
model->setHeaderData(5, Qt::Horizontal, QString::fromLocal8Bit("Расчетный счет"));
mapper = new QDataWidgetMapper(this);
mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
mapper->setModel(model);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));
mapper->addMapping(nameCompany, 1);
mapper->addMapping(adressCompany, 2);
mapper->addMapping(unpEdit, 3);
mapper->addMapping(bankEdit, 4);
mapper->addMapping(numberBankEdit, 5);
mapper->setCurrentIndex(0);
view->setModel(model);
db.close();
Автор: maint 20.7.2010, 14:13
model->database().transaction();
if (model->submitAll()) {
model->database().commit();
model->select();
} else {
model->database().rollback();
QMessageBox::critical(); сообщение об ошибке
}
Автор: Litkevich Yuriy 20.7.2010, 14:38
maint, он использует:
Цитата(bynet @ 20.7.2010, 15:20)

mapper->setSubmitPolicy(QDataWidgetMapper::AutoSubmit);
ему не нужны транзакции.
bynet, я подозреваю, что ты что-то забыл для QDataWidgetMapper. посмотри пример:
%QTDIR%\demos\books\bookwindow.cpp
Автор: bynet 20.7.2010, 15:22
Все примеры используют память для хранения бд, мне надо в файл. Поэтому примера нету. Когда я изменяю в таблице значение, оно там остается. Но при закрытии программы, и повторного запуска идет прием данных из бд, данные старые. Буду пробовать пример maint
Помог вариант maint.
Автор: Litkevich Yuriy 20.7.2010, 15:43
Цитата(bynet @ 20.7.2010, 19:22)

Все примеры используют память для хранения бд,
подправь это место, да проверь.