我试着做功能来检查表是否存在,并获得总的行数,但我得到的结果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