【发布时间】:2015-10-05 23:00:40
【问题描述】:
我正在尝试从 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;
}
【问题讨论】:
-
那么在函数文件中,在
MYSQLInit()中,你调用mysql_init()之后,con不是NULL? -
是的,完全正确。然后我添加了
mysql_store_result( )和mysql_fetch_row( )从mysql 数据中读取数据。它工作正常。只有当它返回到 main 时,它才会再次为空。 -
mysql_error(con)告诉你什么? -
@moffeltje 它是空的。除了
\n,它根本不打印任何消息。这意味着它不是错误,只是con是空的。