今天用QString.arg操作QSQLite,遇到一个小问题,很快解决。
代码先上:
...
QString dest="*";
QString tableName="AutoSaveStorage";
QString where="where Note like \'%1%\'";
QString orderBy="order by LayerPos"
...
...
QString command=QString("select %1 from %2 %3 %4").arg(dest).arg(tableName).arg(where).arg(orderBy);
QSqlQuery query;
query.prepare(command);
quuer.exec();
结果报错:
SQL:prepare failed。在QString的".arg"方法中如果arg参数含有与QString("select %1 from %2 %3 %4")中的相同符号(这里是%1)会把arg在其中的位置混淆。
QString中虽然有很多方法很好用也很直观,不过使用的时候也必须小心。这里我把arg这种方法换成QString+的形式实现:
QString command=QString("select “)+dest+" from "+tableName+where+orderBy;