SQLite和QSqlQuery:引用有界值

时间:2013-04-09 16:11:41

标签: c++ sqlite qt4 qsqlquery

我想获得指定月份和年份的条目日期,因为我在 SQliteman 中成功执行了下一个查询:

SELECT date FROM Entries WHERE strftime('%Y-%m',date) = '2013-04'

要将此查询与QSqlQuery一起使用,请使用以下代码

query.prepare("SELECT date FROM Entries WHERE strftime('%Y-%m',date) = ':year-:month'");
query.bindValue(":month", QString().sprintf("%02d", month));
query.bindValue(":year", QString::number(year));

但引发错误“参数计数不匹配”。这是针对:年:月中的引号,但我必须使用它,否则查询不会返回任何结果。

如果无法使用引号,必须如何构建查询?

1 个答案:

答案 0 :(得分:0)

你不能替换字符串中的参数;参数本身就是整个字符串。

在SQL中连接字符串:

query.prepare("SELECT ... WHERE strftime(...) = :year || '-' || :month");

您也可以事先构建整个字符串:

query.prepare("SELECT ... WHERE strftime(...) = :yyyymm");
query.bindValue(":yyyymm", month + "-" + year);
相关问题