QT Sqlite数据库-教程002 查询数据-下
【1】数据库查询的优化:prepare
prepare语句是一种在执行之前将SQL语句编译为字节码的机制,可以提高执行效率并防止SQL注入攻击。
【2】使用prepare查询一张表
QString myTable = "myTable" ;
QString cmd = QString("SELECT * FROM %1 ORDER BY id").arg(myTable.c_str());
QSqlQuery query(m_db);
query.setForwardOnly(true);
query.prepare(cmd);
bool bRet = query.exec();
if(bRet){
qDebug()<<"select:"<<"success";
}
else{
qDebug()<<"select:"<<"fail";
}
while (query.next()) {
int id = query.value(0).toInt();
QString field1 = query.value(1).toString();
QString field2 = query.value(2).toString();
QString field3 = query.value(3).toString();
QString field4 = query.value(4).toString();
QString field5 = query.value(5).toString();
qDebug()<<field1<<field2<<field3<<field4<<field5;
}
return bRet;
【3】setForwardOnly
setForwardOnly方法用于设置查询模式为只向前移动。当设置为true时,查询结果只能向前移动,不能向后移动或随机访问,这样可以提高查询效率并减少内存使用。
优点:
在prepare之前调用setForwardOnly(true)可以禁用缓存,从而减少内存使用并提高性能