【问题标题】:How to insert a null value with Qt?如何用 Qt 插入空值?
【发布时间】:2010-09-25 05:25:34
【问题描述】:

请提示我,如何使用 Trolltech Qt 4.x SQL 类将空值插入表中? QSqlQuery,我猜,或者来自 QtNetwork 的其他东西。 作为它的类比,在.NET 中有System.DbNull 类,它代表sql NULL。

我应该为某个对象的属性使用什么类型,它可以同时保存空值和QString?在 C# 中,我可以使用 System.Object

【问题讨论】:

    标签: c++ sql qt null


    【解决方案1】:

    问题是针对 QT 4 的,但我认为值得一提的是,在 QT 5 中您只需传递一个 NULL 值。

    【讨论】:

    • 你能澄清一下吗?这究竟是如何工作的?你能举一个代码例子吗?如果我输入文本“NULL”,那么它会写入文字字符串 NULL。如果我指定 NULL(不带引号),则会收到错误消息“从 'long' 到 'const QVariant' 的转换不明确”。
    • @Dan 我觉得不用代码就很清楚了,你可以传递NULL指针,而不是字符串"NULL"。我现在不使用 QT,但我记得你可以在 Qt 5 中传递 NULL,正如我在答案中指定的那样。你有 Qt 5 还是之前的版本?
    • 没有代码就不清楚,否则我不会要求澄清。实际上,您对 nullptr 的建议无法在 QT 5 中编译,并出现错误“从 'nullptr_t' 到 'const QVariant' 的转换不明确”。使用文字 0 会将零写入数据库,而不是 NULL。
    【解决方案2】:

    回答第二个问题,QString可以为空。

    【讨论】:

      【解决方案3】:

      来自QSqlQuery::addBindValue 文档:

      要绑定 NULL 值,请使用 null Q变体;例如,使用 QVariant(QVariant::String) 如果你是 绑定一个字符串。

      【讨论】:

      • 非常感谢您的回答,正是我想要的!对于其他数据类型需要它的人,只需使用 QVariant(QVariant::Date) 等等。 (很高兴现在摆脱我数据库中的所有“0000-00-00”值 :-))
      猜你喜欢
      • 1970-01-01
      • 2016-03-17
      • 2011-01-26
      • 1970-01-01
      • 2019-10-20
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 2019-03-20
      相关资源
      最近更新 更多