一、前言
查询数据库方式
二、环境
qt all
mingw
sqlite3
window10
三、正文
1.数据库表内只有单行的数据查询
QSqlQuery qry(db);
QString sql=tr("select * from parameter");
if(qry.exec(sql)&&qry.next()){
Datapoint=qry.value(1).toInt();
Datafreq=qry.value(2).toInt();
Datamode=qry.value(3).toInt();
}
2.数据库表内有多行的数据查询(不固定行数据)
QSqlQuery qry(db);
if(qry.exec("select * from lastlog")){
for(int i=0;qry.next()&&i<10000;i++){
bussiness_flag[i]=qry.value(0).toInt();
bussiness_timer[i]=qry.value(1).toInt();
bussiness_name[i]=qry.value(2).toString();
}
}
3.数据库表内有多行的数据查询(搜索查询)
QSqlQuery qry(db);
QString sql;
sql=QString("select * from history where times is '%1'").arg(timers);
if(qry.exec(sql)){
for(i=0;qry.next()&&i<10000;i++){
thistimes[i].note=qry.value(0).toString();
thistimes[i].income=qry.value(2).toDouble();
thistimes[i].payout=qry.value(3).toDouble();
}
}
4.数据库表内有多行的数据查询(时间范围查询)
QSqlQuery qry(db);
QString sql=tr("select * from history where time between '%1' and '%2'").arg(startdata).arg(enddata);
if(qry.exec(sql)){
for(int i=0;qry.next()&&i<1000;i++){
thistimes[i].payout=qry.value(3).toDouble();
}
}
5.数据库表内有多行的数据查询(多条件查询)
QSqlQuery qry(db);
QString sql=tr("select * from Sys_model where car='%1' and part='%2'").arg(car).arg(part);
if(qry.exec(sql)){
for(int i=0;qry.next()&&i<10000;i++){
Data_model.id.append(qry.value(0).toUInt());
}
}
6.数据库表内有多行的数据查询(多条件筛选查询)
QSqlQuery qry(db);
QString sql=tr("select * from Sys_model where car like '%1' and part like '%2' and 性别='男'").arg(car).arg(part);
if(qry.exec(sql)){
for(int i=0;qry.next()&&i<10000;i++){
Data_model.id.append(qry.value(0).toUInt());
}
}
7.数据库表内有多行的数据查询(多条件多种类筛选查询)(日期范围+指定列内容搜索查询)
QSqlQuery qry(db);
QString sql=tr("select * from Sys_history where (time between '%1' and '%2') and (user = '%3') and (car = '%4')").arg(m_search_startdate.toString("yyyy.MM.dd")).arg(m_search_enddate.toString("yyyy.MM.dd")).arg(m_search_user).arg(m_search_car);
if(qry.exec(sql)){
for(int i=0;qry.next()&&i<10000;i++){
Data_model.id.append(qry.value(0).toUInt());
}
}
这里就是将多个where分开,只有一个where,然后每个种类用括号区分开来。
四、结语
读取大量数据死机时,在qry.exec前使用qry.setForwardOnly(true);试试,会有奇效