一、如何把查询结果分页返回
1.把查询结果放到一个零时表中
先建立一个新表temcity,把city的字段完全复制到temcity。
清空temcity表。
truncate table temcity
使用以下语句先进行 “查询->赋值” 操作:
INSERT INTO temcity SELECT * FROM city WHERE pllh = 'condition'
把表city中pllh = ‘condition’的所有条目都插入到了表temcity中。
2.查temcity表,限制返回的条目数量,以及其开始的坐标,比如返回从坐标0开始之后的1000条数据:
SELECT * FROM temcity limit 0,1000
作为第一页,返回从坐标1000开始之后的1000条数据作为第二页:
SELECT * FROM temcity limit 1000,1000
3.获得temcity中的数据总条数:
QString strres = QString("SELECT * FROM temcity WHERE pllh like pllh");
QSqlError lastError;
bool successres = querysql.exec(strres);
if(successres){
while(querysql.next()){
IDlist.append(querysql.value(1).toString());
}
totalSize = IDlist.size();
。
。
。
二、界面上刷新显示对应页内容的方法。
1.Qtableview使用方法。
先在ui文件添加一个Qtableview,然后新建数据模型,设置列名。
model = new QStandardItemModel();
ui->tableView->setModel(model);
ui->tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignHCenter);
ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
model->setColumnCount(7);
model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("1"));
model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("2"));
model->setHeaderData(2,Qt::Horizontal,QString::fromLocal8Bit("3"));
model->setHeaderData(3,Qt::Horizontal,QString::fromLocal8Bit("3"));
model->setHeaderData(4,Qt::Horizontal,QString::fromLocal8Bit("4"));
model->setHeaderData(5,Qt::Horizontal,QString::fromLocal8Bit("5"));
model->setHeaderData(6,Qt::Horizontal,QString::fromLocal8Bit("6"));
查数据库,先刷新model
model->clear();//刷新model
把数据库返回的数据填到Qtableview里
QString strfirstpage = QString("SELECT * FROM temcity limit 0,1000");
bool successrFirstpage = querysql.exec(strfirstpage);
if(successrFirstpage){
while (querysql.next()) {
pllhlist.append(querysql.value(1).toString());
dhlist.append(querysql.value(2).toString());
czlist.append(querysql.value(3).toString());
zllist.append(querysql.value(4).toString());
hang.append(querysql.value(5).toString());
lie.append(querysql.value(6).toString());
timelist.append(querysql.value(7).toString().replace("T"," "));
}
model->setColumnCount(7);
model->setHeaderData(0,Qt::Horizontal,QString::fromLocal8Bit("坯料炉号"));
model->setHeaderData(1,Qt::Horizontal,QString::fromLocal8Bit("锭号"));
model->setHeaderData(2,Qt::Horizontal,QString::fromLocal8Bit("材质"));
model->setHeaderData(3,Qt::Horizontal,QString::fromLocal8Bit("重量"));
model->setHeaderData(4,Qt::Horizontal,QString::fromLocal8Bit("行"));
model->setHeaderData(5,Qt::Horizontal,QString::fromLocal8Bit("列"));
model->setHeaderData(6,Qt::Horizontal,QString::fromLocal8Bit("时间日期"));
for(int i = 0; i < pllhlist.size(); i++)
{
model->setItem(i,0,new QStandardItem(pllhlist[i]));
model->setItem(i,1,new QStandardItem(dhlist[i]));
model->setItem(i,2,new QStandardItem(czlist[i]));
model->setItem(i,3,new QStandardItem(zllist[i]));
model->setItem(i,4,new QStandardItem(hang[i]));
model->setItem(i,5,new QStandardItem(lie[i]));
model->setItem(i,6,new QStandardItem(timelist[i]));
}
}
这句就是分页查询的关键:
QString strfirstpage = QString(“SELECT * FROM temcity limit 0,1000”);