下面的简单代码:
class A{
MySQL *conn;
int query;
public:
bool one(string fpServerName, string fpUserName, string fpPassword, string fpDatabase){
conn = mysql_init(&mysql);
conn = mysql_real_connect(&mysql, fpServerName.c_str(), fpUserName.c_str(), fpPassword.c_str(), fpDatabase.c_str(), 0, NULL, 0);
if (!conn)
return false;
else
return true;
}
two(string fpSQL){
query = mysql_query(conn, fpSQL.c_str());
}
A(){}
}
int main(){
A obj;
obj.one("127.0.0.1", "root", "", "users");
obj.two(fpSQL);
}
当我调用 one("127.0.0.1"、"root"、"、"users"( 函数时,它会连接到数据库。现在我想在两个(fpSQL(中使用conn,但不幸的是,程序在查询中崩溃 = mysql_query(conn, fpSQL.c_str(((;我错过了什么吗?感谢您的建议。
程序崩溃,因为您的conn变量为nullptr
尝试以这种方式检查 conn 变量:
void two(string fpSQL){
if(nullptr!=conn){
query = mysql_query(conn, fpSQL.c_str());
}
}
另一件事是,函数 one 返回您未检查的布尔值,以这种方式更改 main 函数:
int main(){
A obj;
if(obj.one("127.0.0.1", "root", "", "users")){
obj.two(fpSQL);
// Close connection here
}
}
请记住在 main 末端关闭连接。