C中判断Mysql数据库中是否存在表

先占位,以后编辑

有四种方式进行判断:

1. SHOW TABLES LIKE 'testtable'; 

这种方法在代码中不易实现.
2. select TABLE_NAME from INFORMATION_SCHEMA.TABLES whereTABLE_SCHEMA='dbname' and TABLE_NAME='tablename' ;

这种方法实现起来比较简单。一个判断mybase中是否存在testtable表的实例:

MYSQL mysql;
MYSQL_RES* result = NULL;
int count = 0;
if(0==mysql_query(&mysql,"select table_name from information_schema.tables where TABLE_SCHEMA='mybase' and TABLE_NAME='testtable'"))
{ 
 result = mysql_store_result(&mysql);
 count = mysql_num_rows(result);
}
else
{
 printf("Error: %s\n\n",mysql_error(&mysql));
}
if(count>0) printf("已存在该表");

3.通过调用mysql_list_tables(MYSQL* mysql,"tablename")实现。

依旧是判断当前连接mybase库中是否存在testtable实例:

MYSQL_RES *result=mysql_list_tables(&mysql,"testtable");
MYSQL_ROW row;
int count = 0;
while((row=mysql_fetch_row(result))!=NULL)
{	
	printf("TABLE %d: %s\n",cnt,row[0]);  
	cnt++;
}
if (mysql_errno(&mysql))  //mysql_fetch_row() failed due to an error
{
	fprintf(stderr, "Error:%s\n",mysql_error(&mysql));
}
if(count>0) printf("该表已存在");

4. 如果表不存在就建立这个表,那么可以直接用 create table if not exists tablename 这样的指令来建立,不需要先去查询表是否存在。

实现是亦通过mysql_query()等API即可。

你可能感兴趣的:(C中判断Mysql数据库中是否存在表)