QSqlQuery,当 QLineEdit 为空时绑定一个空值

QSqlQuery, bind a null when QLineEdit is empty

本文关键字:空值 一个 绑定 QLineEdit QSqlQuery      更新时间:2023-10-16

我正在开发数据库应用程序,当QLinEdit为空时,需要将NULL值写入数据库(而不是空白,这似乎是默认行为(。

以下代码接近工作,尽管它总是将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传递到数据库。

您需要在

占位符名称的开头包含冒号,按照文档:

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

所以它看起来更像这样:

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

谢谢森林亲爱的!

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

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