如何使用局部变量作为MySQL查询的一部分(Qt C++)

Ang*_*uck 0 c++ mysql qt

正如问题所说我试图MySQL使用局部变量为where子句查询数据库.我知道在java中你可以使用+运算符在查询字符串中插入局部变量,这显然是不一样的C++.所以我想也许id使用字符串流:

void test::something(double car_id)
{
 std::stringstream ss;
    ss << "SELECT * FROM cars WHERE carID = '";
    ss << car_id << "'";
    QString query_string = QString::fromStdString(ss.str());
    QSqlQuery query(query_string);
    // execute the query
    query.exec();
    std::cout << query.value("carID").toString().toStdString() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

但这也没有用,任何帮助都会很棒,因为我似乎无法找到答案

干杯

Wol*_*lph 9

不是将变量附加到查询字符串,而是应该参数化查询.所以,像这样:

void test::something(double car_id){
    QSqlQuery query;
    query.prepare("SELECT * FROM cars WHERE carID = ?");
    query.addBindValue(car_id);
    query.exec();
    std::cout << query.value("carID").toString().toStdString() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

或者使用命名绑定:

void test::something(double car_id){
    QSqlQuery query;
    query.prepare("SELECT * FROM cars WHERE carID = :car_id");
    query.bindValue(":car_id", car_id);
    query.exec();
    std::cout << query.value("carID").toString().toStdString() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)