今天Qt在调试数据库的代码时发现一个挺有意思的bug,来记录一下,也帮助遇到同样问题的朋友解解惑。
1、举个简单的代码实例:
QString test;
test += QString("AND (%1 LIKE '\%%2\%' OR %3 LIKE '\%%4\%') ")
.arg("str1").arg(1)
.arg("str2").arg(1);
qDebug()<<"test = "<<test;
对应调试打印信息:
test = "AND (str1 LIKE 'str2%' OR 1 LIKE '%%4%') "
2、很明显这个不是我们想要的效果,数据拼接错乱了,也是神奇,咱换一种方式组装:
QString test;
test += QString("AND (%1 LIKE '\%%2\%' ").arg("str1").arg(1);
test += QString("OR %1 LIKE '\%%2\%') ").arg("str2").arg(1);
qDebug()<<"test = "<<test;
对应调试打印信息:
test = "AND (str1 LIKE '%1%' OR str2 LIKE '%1%') "
3、这时输出正常了,这才是我们想要的结果。