mysql_real_query返回1,mysql_error返回NULL字符串

时间:2011-07-06 03:39:34

标签: c++ mysql

当我运行第一个查询时,mysql_real_query返回1,根据我的理解,这是正常的,我必须调用mysql_errno()和mysql_error()来获取有关错误的信息。但是为什么mysql_error()会返回一个NULL字符串?

运行第二个查询或mysql_ping后,我收到一个违规异常。 发生了什么事的任何线索?

另外,我应该在C ++程序中使用C ++连接器,还是C连接器(我正在使用的)也能正常工作。我是否必须在我的编译器下编译才能使它工作?

这是我使用的代码的一部分,这可能有助于某人找到解决方案。我不知道这里有什么问题。

char req[50];
static char *serverOptions_p[] = {
     "abc",
     "--datadir=C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/data/abc",
     "--language=C:/Program Files/MySQL/MySQL Server 5.5/share/english", 
     NULL
};
int numElements = sizeof (serverOptions_p) / sizeof(char *) - 1;
static char *serverGroups_p[] = { "mysql_server", NULL };
if (mysql_library_init(numElements, serverOptions_p, (char **) serverGroups_p)) {
    return;
}

d_connectionHandle_p = mysql_init(NULL);

if (d_connectionHandle_p) {
    my_bool mb = true;
    mysql_options(d_connectionHandle_p, MYSQL_OPT_RECONNECT, &mb);
    if (mysql_real_connect(d_connectionHandle_p, server_p, user_p, password_p, database_p, 0, NULL, 0)) {
        sprintf(req, "CREATE DATABASE %s", database_p);
        mysql_real_query(d_connectionHandle_p, requete, strlen(requete));
    }
}
else {
    return;
}

int e;
strcpy(req, "SELECT * FROM test");

if ((e = mysql_real_query(d_connectionHandle_p, req, strlen(req))) != 0) { // This is where it returns 1
    const char *err = mysql_error(d_connectionHandle_p); // Returns an empty string
    if (err)
    {
    }
}

1 个答案:

答案 0 :(得分:0)

根据the manual,非零返回值表示发生错误:

Return Values

Zero if the statement was successful. Nonzero if an error occurred.