天天看點

Qt QString使用arg存在的陷阱

文章目錄

  • ​​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;      

列印結果:

Qt QString使用arg存在的陷阱

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);