【发布时间】:2021-09-29 19:26:13
【问题描述】:
我正在创建一个QSqlRecord 对象,然后将值设置为该QSqlRecord 对象。但是即使我将QSqlRecord对象插入QSqlTableModel对象,插入记录的函数也会返回false。
我有这个 C++ 代码,它创建了一个 QSqlRecord 对象并设置了值。它以正确的索引顺序设置值作为表的创建方式。
/* Insert data */
int column_index = 0; /* Index 0 is the ID column */
QSqlRecord record;
qDebug() << CALIBRATION_COLUMNS.at(column_index).first;
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, 1); /* ID */
qDebug() << CALIBRATION_COLUMNS.at(column_index).first;
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, calibration_id);
qDebug() << CALIBRATION_COLUMNS.at(column_index).first;
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, calibration_comment);
qDebug() << CALIBRATION_COLUMNS.at(column_index).first;
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, calibration_date_time);
for(int i = 0; i < 12; i++){
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, min_adc[i]);
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, max_adc[i]);
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, bias_adc[i]);
}
for(int i = 0; i < 5; i++){
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, min_dadc[i]);
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, max_dadc[i]);
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, bias_dadc[i]);
}
for(int i = 0; i < 2; i++)
record.setValue(CALIBRATION_COLUMNS.at(column_index++).first, pulses_per_revolution_encoder[i]);
/* -1 means append record */
qDebug() << calibration_model->insertRecord(-1, record);
qDebug() << calibration_model->lastError().text();
qDebug() << "Submit:";
if(!calibration_model->submitAll()){
qDebug() << calibration_model->lastError().text();
return DATABASE_STATUS_COULD_NOT_INSERT_ROW;
}
return DATABASE_STATUS_OK;
但是即使我插入记录,这个函数calibration_model->insertRecord(-1, record);返回false但是calibration_model->submitAll()返回true。
输出:
"ID"
"calibration_id"
"calibration_comment"
"calibration_date_time"
false
"No Fields to update"
Submit:
那么告诉我。我在这里做错了什么?
我收到错误No Fields to update,但这是什么意思?我有一个空表,我只想追加一行。
【问题讨论】:
-
您使用的是哪个版本的 QT?这是 Qt 4.4.1 和 4.4.2 中的错误;
-
@VahagnAvagyan QT 5.1.12
-
@VahagnAvagyan 是的!我正在尝试改用
QSqlQuery类。效果更好。 -
把
QSqlRecord record;改成QSqlRecord record = calibration_model->record()