我想获得给定月份和年份的条目日期,为此我在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));
但是会引发错误"Parameter count mismatch"。这是对于:year和:month中的引号,但是我必须使用它,否则查询不会返回任何结果。
如果不能使用引号,该如何构建查询?
不能替换字符串中的参数;参数本身是完整的字符串。
连接SQL中的字符串:
query.prepare("SELECT ... WHERE strftime(...) = :year || '-' || :month");
也可以事先构造整个字符串:
query.prepare("SELECT ... WHERE strftime(...) = :yyyymm");
query.bindValue(":yyyymm", month + "-" + year);