windows + C++ 判断mysql是否存在某张表

作者:hnynes
QQ :61737489
E-mail: hnynes1015@163.com
msn:    hnynes@gmail.com
个人主页: http://hnynes.51.com
CU博客  : http://hnynes.cublog.cn
  
今天因为要做一程序,在mysql里面查找是否存在某张表,特意,在网上找了好久,终于找到了.其实也算不上原创,发在下面,与大家一起分享.

方法1:直接检测并创建
CREATE TABLE if not exists helloworld (
PLAYERID int(11) NOT NULL DEFAULT '0',
PLAYERNAME varchar(100) DEFAULT NULL,
SEVID int(11) NOT NULL DEFAULT '0',
SEVNAME varchar(100) DEFAULT NULL,
TOTALMARK decimal(20,1) NOT NULL DEFAULT '0.0',
TOTALRANK int(11) NOT NULL DEFAULT '0',
ONLINESEC int(11) NOT NULL DEFAULT '0',
ONLINEHOUR int(11) NOT NULL DEFAULT '0',
ONLINEMIN int(11) NOT NULL DEFAULT '0',ONLINESECOND int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`PLAYERID`,`SEVID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

只要使用Database的对象执行上面的脚本就可以在mysql中,查找是否存在表helloworld,如果不存在的话,就直接创建该表.

方法2:也是使用脚本,但这种我只在管理器里面成功过,在代码里面感觉要处理这个还有点困难.
show TABLES like 'buzidao';

方法3:使用脚本,我认为此种方法最好了.
先用Database对象去执行脚本use information_schema;
然后用Recordset对象执行脚本
select count(*) AS table_count from tables where table_schema = '数据库名' and table_name = '表名'
接下来,可以依据列名去获取表的个数.

方法4:使用脚本,较第三种简单
select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME = 'buzidao'

因为在此,我的重点是如何去判断myslq是否存在某张表,多数都只有脚本,没有程序段.以上脚本我都在C++里面测试过,可以通过.然后,我所说的Database,Recordset对象,都是直接封闭COM的.

感觉mysql里面,非标的东西太多了.但愿在以后的版本中能有所改观啊.

欢迎对mysql感兴趣的,提出自己的其它好办法.