如何使用C++中的变量进行sql_query

How to do a sql_query with a variable in C++?

本文关键字:sql query 变量 何使用 C++      更新时间:2023-10-16

我正在尝试从数据库中动态获取不同的值,因此我需要在我的mysql_query中放置一个变量。

#include <cstdlib>
#include <iostream>
#include <mysql.h>
#include <string>
#include <sstream>
using namespace std;
MYSQL* ConnexionSql()
{
    MYSQL* conn;
    conn = mysql_init(0);
    conn = mysql_real_connect(conn, "localhost", "root", "ADAI1819", "projetADAI", 3306, NULL, 0);
    return conn;
}
int NbCompo() //Without any variable this work perfectly
{
    MYSQL* conn = ConnexionSql();
    MYSQL_RES *res_set;
    MYSQL_ROW row;
    mysql_query(conn, "select NbCompo from Envoi");
    res_set = mysql_store_result(conn);
    row = mysql_fetch_row(res_set);
    string chaine = row[0];
    int result = std::stoi(chaine);
    return result;
}
int NbProduit(string x) //And here is my problem
{
    MYSQL* conn = ConnexionSql();
    MYSQL_RES *res_set;
    MYSQL_ROW row;
    x = "Select " + x + " from Envoi";
    mysql_query(conn, x.c_str());
    res_set = mysql_store_result(conn);
    row = mysql_fetch_row(res_set);
    string chaine = row[0];
    int result = std::stoi(chaine);
    return result;
}

构建完美,但是当我运行它时,我收到此消息"在ProjectADAI中0x00007FFFF7C1BD66(libmysql.dll(引发异常.exe:0xC0000005:读取位置0x0000000000000010时访问冲突。(这是一个翻译,我是法语,请原谅我的英语(。

mysql_real_connect可能返回 null。您需要检查结果是否为 null,然后调用 mysql_error 以发现错误代码。