我正在尝试从数据库中动态获取不同的值,因此我需要在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时访问冲突。” (这是翻译,我是法国人,请原谅我的英语)。
答案 0 :(得分:0)
mysql_real_connect
可能返回null。您需要检查结果是否为空,然后调用mysql_error
来发现错误代码。