QTやC++には比較的新しく、データベースの基本的なフロントエンドを作成しようとしています。QT - 空のQlineditがSQLデータベースに書き込むときにNULLとして渡されない
Qlineeditsが空白または空白になっていると、空のデータがデータベースに書き込まれます。つまり、「column」がNULLの場所を選択した場合、結果は得られません。しかし、もし私が* 'column' = ''を選択すると、すべての空の行が得られます。
この動作を変更する方法はありますか?または、それらをNULLとして書かせるか? Qlineeditのデータを整数として格納するデータベースでは空白を書き込もうとしているフィールドでは、それが混乱の原因になるのではないかと心配しています。 Qlineditsを '0'、つまりui-> txt_NAF-> setText();に事前設定することができました。しかし、これは人間の誤りを取り除かないでしょう。
誰でもこの問題の解決方法がありますか?
以下にデータベース(SQLサーバー)に挿入するためのQTコードのスニペット。
void log::on_pushButton_clicked() /* this is my save button */
{
MainWindow conn;
QString BANK_MNTH, BUSN_MNGR, CUST_FRST_NAME, CUST_LAST_NAME, DEAL_NUMB ,COST;
BANK_MNTH=ui->txt_BANK_MNTH->text();
BUSN_MNGR=ui->txt_BUSN_MNGR->text();
CUST_FRST_NAME=ui->txt_CUST_FRST_NAME->text();
CUST_LAST_NAME=ui->txt_CUST_LAST_NAME->text();
DEAL_NUMB=ui->txt_DEAL_NUMB->text();
COST=ui->txt_NAF->text();
if(!conn.connOpen()){
qDebug()<<"Failed to open database";
return;
}
conn.connOpen();
QSqlQuery qry;
qry.prepare("insert into LOG (BANK_MNTH, BUSN_MNGR, CUST_FRST_NAME, CUST_LAST_NAME, DEAL_NUMB ,COST) values ('"+BANK_MNTH +"','"+BUSN_MNGR+"','"+CUST_FRST_NAME+"','"+CUST_LAST_NAME+"','"+DEAL_NUMB+"','"+COST+"')");
if(qry.exec())
{
QMessageBox::critical(this,tr("Save"),tr("Record Saved"));
QSqlQueryModel * modal=new QSqlQueryModel();
QSqlQuery* qry2=new QSqlQuery(conn.mydb);
qry2->prepare("select DEAL_NUMB, BUSN_MNGR, CUST_FRST_NAME, CUST_LAST_NAME, COST from LOG order by DEAL_NUMB DESC");
qry2->exec();
modal->setQuery(*qry2);
ui->tableView->setModel(modal);
ui->tableView->resizeColumnsToContents();
ui->tableView->setAlternatingRowColors(true);
conn.connClose();
foreach(QLineEdit *log, this->findChildren<QLineEdit*>()) {
log->clear();
}
}
else
{
QMessageBox::critical(this,tr("Error"),qry.lastError().text());
}
}
ありがとうございました。本当に助かりました。また、 "int integer_value = ui-> lineEdit-> text()。toInt();"のようなものを使って、整数をデータベースに渡すべきですか?代わりにテキストとして? – FrostK
することができます.... QVariantはほとんどすべての種類のオーバーロードを持っています.... – Naidu
上記のコードを使用していくつかの異なることを試してきましたが、NULLだけがデータベースに渡されますか? – FrostK