正如问题所说,我正在尝试使用 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/