Пытаюсь сделать серию запросов к базе
Накапливаю запросы
C++ (Qt)
bool DataBaseModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
if(index.isValid()){
dataRecords.at(index.row())->operator [](index.column()) = value.toString();
if(index.row() < startCountRecords){
qDebug()<<"UPDATE...";
//создаем список запрос на updaet на каждую ячейку
//ставим фильтр запросов если index-ячейки для предидущего запроса совпадает с текущим,
//то предыдущий удаляем из списка. QHash updateQuery<index,QSqlQuery *>
QSqlQuery *query = new QSqlQuery;
query->prepare("UPDATE ALGORITHMS SET " + sqlModel->record().fieldName(index.column()) + " = ? WHERE CODE = ?");
query->addBindValue(value);
const QModelIndex indexCode = QAbstractTableModel::index(index.row(),0,QModelIndex());
int code = data(indexCode,Qt::DisplayRole).toInt();
qDebug()<<"code = "<<code;
query->addBindValue(QVariant(code));
QList<QModelIndex> listKeys = updateQuery.keys();
if(!listKeys.isEmpty()){
for(int i = 0; i<listKeys.count(); i++){
if(listKeys.at(i) == index){
QSqlQuery *query = updateQuery[index];
qDebug()<<"remove setData";
qDebug()<<updateQuery.remove(index);
delete query;
break;
}
}
}
updateQuery.insert(index,query);
}
return true;
}
return false;
}
Исполняем по нажатию
C++ (Qt)
void DataBaseModel::updateDataInBase()
{
qDebug()<<__FUNCTION__;
QList<QModelIndex> listKeys = updateQuery.keys();
if(!listKeys.isEmpty()){
for(int i = 0; i<listKeys.count(); i++){
QSqlQuery *query = updateQuery[listKeys.at(i)];
qDebug()<<query->exec();
qDebug()<<"remove updateDataInBase";
qDebug()<<updateQuery.remove(listKeys.at(i));
delete query;
}
}
}
Но к сожалению иногда при выполнении запроса выдается false не могу понять почему