C++ QSqlQuery,当QLineEdit为空时绑定null
我正在处理一个数据库应用程序,当C++ QSqlQuery,当QLineEdit为空时绑定null,c++,sql,qt,C++,Sql,Qt,我正在处理一个数据库应用程序,当QLinEdit为空时,需要向数据库写入一个NULL值(与空白相对,空白似乎是默认行为) 尽管以下代码总是将NULL写入数据库,即使QLinEdit中包含文本字符串,但它仍能正常工作。非常感谢您的帮助 示例代码: QSqlQuery qry; qry.prepare("insert into [DB] (BUSN_MNGR) values (:BUSN_MNGR)"); QString BUSN_MNGR; BUSN_MNGR=ui->txt_BUSN
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.
由于某些原因,只有
null
被传递到数据库 根据文档,您需要在占位符名称的开头包含冒号:
所以看起来更像这样:
qry.bindValue(":BUSN_MNGR", /* ... */);
谢谢你,亲爱的
如果其他人感兴趣,我通过以下代码调整解决了我的问题:
qry.bindValue(":BUSN_MNGR", ui->txt_BUSN_MNGR->text().trimmed().isEmpty() ? QVariant(QVariant::String): ui->txt_BUSN_MNGR->text());