Название: QSqlTableModell::sumbitAll() - не сохраняет модель, при добавлении новых данных
Отправлено: SmileGobo от Июль 07, 2012, 10:44
Добаляю данные в модель: void DBLogger::AddEvent(const QString& event,const int &dev_addr){ if(m_model==NULL){ throw DBLoggerException("Ошибка модель не инициализирована","DBLogger::AddEvent()"); }
//return true; QSqlRecord new_rec;
int now_timestamp=QDateTime::currentDateTime().toTime_t();
new_rec.setValue("describe",event);
new_rec.setValue("time",now_timestamp);
new_rec.setValue("signnotify",0);
if(!m_model->insertRecord(0,new_rec)){ throw DBLoggerException( "Ошибка не возможно добавить запись", "DBLogger::AddEvent()" ); } if(!m_model->submitAll()){ std::cout<<"db last err code:"<<m_db.lastError().type ()<<std::endl; std::cout<<"db last err code:"<<m_db.lastError().text().toStdString()<<std::endl; std::cout<<"model size:"<<m_model->rowCount()<<std::endl; //постоянно заходит в этот блок throw DBLoggerException( "Ошибка не возможно сохранить модель", "DBLogger::AddEvent()" ); }
} модель инициализируется так: QSqlTableModel* DBLogger::CreateTableModel(){ QSqlTableModel* model=new QSqlTableModel(0,m_db); QSqlQuery query(m_db); const QString sql="create table if not exists "+TABLE_NAME+" (id integer Primary Key autoincrement,describe text not null, time int8 not null,deviceaddr int2 NOT NULL,signnotify BOOLEAN )"; if (!query.exec(sql)){ throw DBLoggerException("Ошибка создания таблицы"+TABLE_NAME.toStdString()+" в"+DB_NAME.toStdString(),"DBLogger::Init()"); }
model->setTable(TABLE_NAME); model->setEditStrategy(QSqlTableModel::OnManualSubmit); model->select(); /* if(model->rowCount() > 0) { model->removeRows(0, model->rowCount()); model->submitAll(); }*/ return model; }
void DBLogger::Init(){ m_db=QSqlDatabase::addDatabase("QSQLITE"); m_db.setDatabaseName(DB_NAME);
if (!m_db.open()){ throw DBLoggerException("Ошибка открытия бд"+DB_NAME.toStdString(),"DBLogger::Init()"); } m_model=CreateTableModel(); } Почему QSqlTableModell::sumbitAll() возвращает false, а вывод ошибок QSqlEror::text() - пустая строка, код QSqlError::code() - 0 ??? ??? ??? Qt 4.4.6 linux debian
Название: Re: QSqlTableModell::sumbitAll() - не сохраняет модель, при добавлении новых данных
Отправлено: RVZ от Июль 09, 2012, 23:47
может быть дело в deviceaddr int2 NOT NULL его в ставки в рекорд я не заметил
|