2011-07-06 3 views
0

最初のクエリを実行すると、mysql_real_queryは1を返します。これは正常です。mysql_errno()とmysql_error()を呼び出してエラーに関する情報を取得する必要があります。しかし、なぜmysql_error()はNULL文字列を返しますか?mysql_real_queryは1を返し、mysql_errorはNULL文字列を返します。

2番目のクエリまたは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) 
    { 
    } 
} 
+0

のご質問の一つに答えるために、いや、C++におけるCのMySQLのコネクタを使用しても問題はありません。 –

+0

あなたは何とかこの作業をしましたか?私はまったく同じ状況にあります。 –

+0

私の場合は、誤って指定されたクエリ文字列(mysql_real_queryの3番目の引数)の長さにすぎません。 –

答えて

0

the manualによると、ゼロ以外の戻り値は、エラーが発生した意味:

Return Values 

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

はい、通常エラー番号は説明につながりますが、1は何も意味しません。mysql_errorはNULL文字列を返します。 – user6604390

関連する問題