如何在查询中使用变量

时间:2018-01-01 22:28:16

标签: c++ sql qt

我必须在查询中使用用户输入值来选择具有该值的行........ 我已经在qt中编写了这段代码,但它不起作用......我该如何解决?

void MainWindow::on_pushButton_clicked()
{
    int j=0;
    float t;
    t=ui->T_lineEdit->text().toFloat();
    QSqlQuery qry;
    if(qry.exec("select * from table where te='+t+'"))
    {
        ui->u_lineEdit->setText("hello");
    }
}

2 个答案:

答案 0 :(得分:1)

您应该使用prepared statement使用QSqlQuery

QSqlQuery qry;
qry.prepare("select * from table where te=?");
qry.addBindValue(t);

if(qry.exec())
{
    ui->u_lineEdit->setText("hello");
}

请注意,将用户的原始字符串连接到SQL查询非常容易受到SQL Injection的攻击。<​​/ p>

答案 1 :(得分:0)

我不喜欢qt,但在我看来你在字符串中使用了连接,所以"select * from table where te='+t+'"应该是"select * from table where te='"+t+"'"

当然,您应该在float值附近放置单引号,但我不知道列te的类型,这很奇怪。可能需要先将t转换为字符串:

"select * from table where te='" + QString::number(t) + "'"

最后,我必须补充说,这看起来很像你允许SQL注入的代码。你应该调查一下,确保避免它。请参阅Frogatto的答案。