QSqlQuery,当QLineEdit为空时绑定null

时间:2018-01-02 11:15:45

标签: c++ sql qt

我正在处理数据库应用程序,当NULL为空时需要向数据库写一个QLinEdit值(而不是空白,这似乎是默认行为)。

以下代码即将开始工作,但它总是将NULL写入数据库,即使QLinEdit包含文本字符串也是如此。非常感谢任何帮助!

示例代码:

QSqlQuery qry;

qry.prepare("insert into [DB] (BUSN_MNGR) values (:BUSN_MNGR)");

QString BUSN_MNGR;

BUSN_MNGR=ui->txt_BUSN_MNGR->text();

qry.bindValue("BUSN_MNGR", BUSN_MNGR.isEmpty() ? QVariant(QVariant::String): BUSN_MNGR);  // bind null if the string is empty

qry.exec .... etc. 

由于某种原因,只将NULLs传递给数据库。

2 个答案:

答案 0 :(得分:1)

您需要在占位符名称的开头包含冒号,根据文档:

https://doc.qt.io/qt-5/qsqlquery.html#bindValue

所以看起来更像是这样:

qry.bindValue(":BUSN_MNGR", /* ... */);

答案 1 :(得分:0)

感谢Forest Darling!

如果有其他人感兴趣,我通过对代码的以下调整解决了我的问题:

 qry.bindValue(":BUSN_MNGR", ui->txt_BUSN_MNGR->text().trimmed().isEmpty() ? QVariant(QVariant::String): ui->txt_BUSN_MNGR->text());