Добаляю данные в модель:
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