【问题标题】:SQLite and QSqlQuery: Quoting bounded valuesSQLite 和 QSqlQuery:引用有界值
【发布时间】:2013-04-01 04:30:03
【问题描述】:

我想获取给定月份和年份的条目日期,因为我在 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));

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

如果不能使用引号,如何构建查询?

【问题讨论】:

    标签: c++ sqlite qt4 qsqlquery


    【解决方案1】:

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

    在 SQL 中连接字符串:

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

    你也可以预先构造整个字符串:

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

    【讨论】:

      猜你喜欢
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      相关资源
      最近更新 更多