【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)可以禁用緩存,從而減少內存使用并提高性能