之前开发的一个测试软件,最近发现一个bug,数据可以存到数据库,但是无法全部显示出来,并且无法全部导出到excel中,只能显示和导出200多条。现在只解决了全部导出的问题,显示的问题还没完全解决,脑壳疼。。。
原来的代码:
QSqlQuery sql_query;
QString create_sql = "create table testdata ('产品编号' varchar, '时间' varchar primary key, '检测对象1' varchar, '相对液位(%)' float, "
"'温度1(℃)' int, '浓度(%)' float, '温度2(℃)' int, '检测结果1' varchar, '检测对象2' varchar, '工作状态' varchar, "
"'通信状态' varchar, '检测结果2' varchar)";
sql_query.exec(create_sql);
sql_query.exec("SELECT * FROM TestData");
QSqlQueryModel *queryModel = new QSqlQueryModel();
queryModel->setQuery(sql_query);
int recordcount = queryModel->rowCount();
改后的代码:
QSqlQuery sql_query;
QString create_sql = "create table testdata ('产品编号' varchar, '时间' varchar primary key, '检测对象1' varchar, '相对液位(%)' float, "
"'温度1(℃)' int, '浓度(%)' float, '温度2(℃)' int, '检测结果1' varchar, '检测对象2' varchar, '工作状态' varchar, "
"'通信状态' varchar, '检测结果2' varchar)";
sql_query.exec(create_sql);
sql_query.exec("SELECT * FROM TestData");
QSqlQueryModel *queryModel = new QSqlQueryModel();
queryModel->setQuery(sql_query);
while(queryModel->canFetchMore())
{
queryModel->fetchMore();
}
int recordcount = queryModel->rowCount();
读取数据库行之前增加以下代码即可解决:
while(queryModel->canFetchMore())
{
queryModel->fetchMore();
}
现在还需要继续解决的事table中无法显示全部数据库内容的问题~~~
继续解决问题…
原代码:
QSqlTableModel *model = new QSqlTableModel;
model->setTable("testdata");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
ui->tableView->setModel(model);
改后代码:
QSqlTableModel *model = new QSqlTableModel;
model->setTable("testdata");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
while(model->canFetchMore()) //增加此段代码,否则最多只能读到256条数据记录
{
model->fetchMore();
}
ui->tableView->setModel(model);
问题解决!欧耶!