先占位,以后编辑
有四种方式进行判断:
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即可。