在C API中检索MySQL * con值

时间:2015-07-16 13:13:20

标签: mysql c

我正在尝试从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;
}

1 个答案:

答案 0 :(得分:1)

您需要再引用一个级别:

void MYSQLInit(MYSQL **con)
{
    *con = mysql_init(NULL);
    // ...
}

然后,致电:

MYSQLInit(&con);

或者,您可以从函数返回MYSQL *,例如:

MYSQL *MYSQLInit()
{
    MYSQL *con = mysql_init(NULL);
    // ...
    return con;
}

并且这样打电话:

con = MYSQLInit();