文章目錄
- 0 結果
- 1 原因
- 2 解決方法
0 結果
錯誤複現:
QString sql = QString("SELECT ComName FROM ComInfo WHERE ComCode LIKE \'%%1%\' LIMIT %2 OFFSET %3").arg("0107").arg(50).arg(0);
qDebug()<<"sql:"<<sql;
列印結果:

1 原因
\'%%1%\'
中的第一個
%
和
"0107"
發生作用,導緻原本
%1
應該被替換為0107倍替換成了5007,也就是第二個被替換的50倍替換到了01的部分,第二個
%2
替換了原本應該第三個替換的0.
2 解決方法
把
LIMIT %2 OFFSET %3
這部分單獨用一個QString存儲,然後拼接即可。
QString sql = QString("SELECT ComName FROM ComInfo WHERE ComCode LIKE \'%%1%\'").arg("0107") + QString(" LIMIT %2 OFFSET %3").arg(50).arg(0);