我試着做功能來檢查表是否存在,並獲得總的行數,但我得到的結果1而不是99999.所以,我應該怎麼做才能正常工作?Mysql,檢查表和行數從C
int sql_table_length(char* database, char* dtable, char* mysql_user_name, char* mysql_password)
{
int retval = 0;
MYSQL *conn;
conn = mysql_init(NULL);
if (conn)
{
if (mysql_real_connect(conn, "localhost", mysql_user_name, mysql_password, database, 0, NULL, 0)!=0)
{
char chktable[512] = {0};
sprintf(chktable,"%s%s%s", "SHOW TABLES LIKE '", dtable, "'");
mysql_query(conn, chktable);
if (mysql_store_result(conn))
{
MYSQL_RES *result;
char lngtable[512] = {0};
sprintf(lngtable, "%s%s", "SELECT COUNT(*) FROM ", dtable);
if (!(mysql_query(conn, lngtable)))
{
result = mysql_store_result(conn);
retval = mysql_num_rows(result); // here I get 1
mysql_free_result(result);
}
else retval = -4; //no rows
}
else retval = -3; //don't exist
}
else retval = -2; //can't connect
}
else retval = -1; //no connection
mysql_close(conn);
return retval;
}
謝謝!
但我怎樣才能得到這個數字在retval?我可以用我的代碼得到它嗎?當然,我想要更快的解決方案。 – 2011-12-17 23:47:02
我添加了一些示例代碼;你想把這些東西放在'sprintf(lngtable,...)'調用代替你的'mysql_query'調用之後。 – 2011-12-17 23:59:32
WOW,如此複雜?我得到一些錯誤:/ home/name /桌面/ _c/_mySqlGUI/mySQLgui/my_main.c||在函數'sql_table_lng':| /home/name/Desktop/_c/_mySqlGUI/mysqlgui/my_main.c|716|error:'mysql_stmt_bind_result'的參數2的不兼容類型| /usr/include/mysql.h|690|note:期望'struct MYSQL_BIND *',但參數的類型爲'MYSQL_BIND'| /home/name/Desktop/_c/_mySqlGUI/mysqlgui/my_main.c|687|warning:未使用的變量'result'[-Wunused-variable] | || ===構建完成:2個錯誤,1個警告=== | – 2011-12-18 00:11:39