我的C客戶端程序連接MySQL服務器。我可以連接,但是當我嘗試實現錯誤檢測代碼時會出現問題。如果我下面的(在這裏我也故意把不正確的用戶名):連接MySQL的C客戶端程序中的錯誤檢測
#include "mysql.h"
int main()
{
MYSQL* conn_ptr_db;
conn_ptr_db = mysql_init(NULL);
if(!conn_ptr_db)
{
perror("Error connecting to MySQL! ");
exit(0);
}
if(mysql_real_connect(conn_ptr_db,"localhost","rooti","root","mysql",0,NULL,0))
{
printf("Hurrah! we have connected to MySQL! ");
mysql_close(conn_ptr_db);
}
else
{
printf("Connection failed to MySQL! \n");
printf("Error code: %d %s %s\n",mysql_errno(conn_ptr_db),mysql_sqlstate(conn_ptr_db),mysql_error(conn_ptr_db));
}
//mysql_close(conn_ptr_db);
return 0;
}
現在輸出到這個程序:
./db_access 連接失敗到MySQL! 錯誤代碼:1045 28000訪問被拒絕用戶'rooti'@'localhost'(使用密碼:是)
這是正確的輸出。
但是,如果我做到以下幾點:
#include "mysql.h"
int main()
{
MYSQL* conn_ptr_db;
conn_ptr_db = mysql_init(NULL);
if(!conn_ptr_db)
{
perror("Error connecting to MySQL! ");
exit(0);
}
//CHANGES -------------
conn_ptr_db = mysql_real_connect(conn_ptr_db,"localhost","rooti","root","mysql",0,NULL,0);
if(conn_ptr_db)
{
printf("Hurrah! we have connected to MySQL! ");
mysql_close(conn_ptr_db);
}
else
{
printf("Connection failed to MySQL! \n");
printf("Error code: %d %s %s\n",mysql_errno(conn_ptr_db),mysql_sqlstate(conn_ptr_db),mysql_error(conn_ptr_db));
}
//mysql_close(conn_ptr_db);
return 0;
}
我得到以下輸出: ./db_access 連接失敗到MySQL! 錯誤代碼:0 08001
在這裏,mysql_errno()和mysql_error()不起作用。爲什麼?