Цитата(MJIbIu @ 28.3.2011, 18:03)
http://www.mysql.ru/docs/gruber/mg23.htmlКОГДА СДЕЛАННЫЕ ИЗМЕНЕНИЯ СТАНОВЯТСЯ ПОСТОЯННЫМИ
Смахивает на твою проблему
Да. Похоже на данную проблему. Как это в СУБД решить, пока не нашел.
/// Вcmaвka строк в таблицу AztPage
bool SqlFileModel::insertRowsAztPage(int row, int count)
{
if(tableName() != QString("AztPage")) return false;
QStringList chart_names(valueElement("Azt/ChartFiles", QStringList()).toStringList());
QString chart_name(chart_names.at(row));
int sz = rowCount(), id = sz,
stump_group_of_pages_id = 1; ///< TODO: номер группы страниц (затычка)
if(id < 0) id = 0;
++id;
for(int i=0; i<sz; ++i)
{
QString file_name(record(i).value("SpatialFilePath").toString());
if(chart_names.at(row).toLower() == file_name.toLower())
return false;
}
QSqlDatabase db(QSqlDatabase::database("conn_1"));
QString query_string(QString("insert into AztPage(Id, SpatialFilePath, GroupOfPagesId) values(%1, '%2', %3)")
.arg(id).arg(chart_names.at(row)).arg(stump_group_of_pages_id));
QSqlQuery query(db), q(db);
query.prepare(query_string);
q.prepare(QString("COMMIT;"));
bool res = query.exec(), res_commit = q.exec();
QString err(q.lastError().text());
if(!res) return false;
return true;
}
res = true, res_commit = false;
И в БД не попадает при выходе из приложения.
В err данном случае попадает следующая фраза
Цитата
cannot commit transaction - SQL statements in progress Unable to fetch row
Данный код тоже выдает сообщение предупреждение
QSQLiteDriver* p_driver((QSQLiteDriver*)QSqlDatabase::database("conn_1").driver());
bool is = p_driver -> commitTransaction();
if(!is)
emit display(p_driver -> lastError().text(), true, false);
Цитата
cannot commit transaction - SQL statements in progress Unable to commit transaction.
Есть варианты как сделать? Копаюсь в ассистенте. Пока ничего не нашел.