我正在尝试从mySQL数据库中检索数据。我写了一个函数来做到这一点。但是当线程返回到main()时,con中的值全为NULL。我不知道为什么。我使用Xcode来调试它。
实际上,昨天工作正常。我只是想改变我的程序路径,然后失败了。即使我改回来,它仍然不再起作用。我写了一个小程序来测试连接,这是同样的问题。
以下是我尝试过的小程序。他们有同样的问题。
#include "fun.h"
int main(void) {
MYSQL* con;
int num;
int* p_num=#
change_num(p_num);
printf("[%d]Hello, World!\n",num);
// After the execution, con is still NULL.
MYSQLInit(con);
if (con==NULL) {
finish_with_error(con);
}
return 0;
}
功能文件:
#include "fun.h"
void MYSQLInit(MYSQL* con){
con=mysql_init(NULL);
if (con == NULL)
finish_with_error(con);
/* mySQL login */
if (mysql_real_connect(con, "85.235.3.37", "July", "0000",
NULL , 0, NULL, 0) == NULL)
{
finish_with_error(con);
}
if (mysql_query(con, "USE lamp")) {
finish_with_error(con);
}
// con has correct value here
}
void finish_with_error(MYSQL *con)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
exit(1);
}
void change_num(int* p_num){
*p_num=10;
}
答案 0 :(得分:1)
您需要再引用一个级别:
void MYSQLInit(MYSQL **con)
{
*con = mysql_init(NULL);
// ...
}
然后,致电:
MYSQLInit(&con);
或者,您可以从函数返回MYSQL *
,例如:
MYSQL *MYSQLInit()
{
MYSQL *con = mysql_init(NULL);
// ...
return con;
}
并且这样打电话:
con = MYSQLInit();