我正在处理数据库应用程序,当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
传递给数据库。
答案 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());