我必须在查询中使用用户输入值来选择具有该值的行........ 我已经在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");
}
}
答案 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的答案。