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

标签 c++ mysql qt

正如问题所说,我正在尝试使用 where 子句的局部变量来查询 MySQL 数据库。我知道在 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;
}

但这也行不通,任何帮助都会很好,因为我似乎找不到答案

干杯

最佳答案

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

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;
}

或者使用命名绑定(bind):

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;
}

关于c++ - 如何使用局部变量作为 MySQL 查询的一部分 (Qt C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16143361/

相关文章:

c++ - 隐式转换的多参数

php - 为电子邮件选择 DISTINCT,但还获得另一列

c++ - 我怎样才能创建一个非常愚蠢的 QWidget?

qt - 在 QGLFramebufferObject 上渲染时错误的 alpha 混合

c++ - C++的多重关联问题

C++:作为指针的全局变量

c++ - Eclipse C++ 头文件和文件问题

php - MySQL 加入帮助

php - 使用 PHP 将数据插入 MySQL 时出现问题

c++ - 如何从 const char* 转换为结构?