如何在C ++中使用变量执行sql_query?

时间:2019-03-27 14:30:12

标签: c++ mysql visual-studio

我正在尝试从数据库中动态获取不同的值,因此我需要在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.exe中的0x00007FFFF7C1BD66(libmysql.dll)抛出异常:0xC0000005:读取位置0x0000000000000010时访问冲突。” (这是翻译,我是法国人,请原谅我的英语)。

1 个答案:

答案 0 :(得分:0)

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