最近的项目有在VC环境下使用Sqlite,常常在创建表之前需要知道这个表是否存在。一开始用CREATE TABLE IF NOT EXISTS 这条SQL语句,但是会报出错误提示“SQLITE_MISUSE”;这种方法行不通,只好自己写个函数判断表是否存在。思路是写一个查询语句,接着判断列的个数,如果列的数目大于0,表示这个表已经创建,等于0,表示不存在这个表。代码如下:
<pre name="code" class="cpp">BOOL IsTableExists(CString sz_tablename) { bool ret = false; CString sz_sql="SELECT ID FROM ";//查询ID列 sz_sql.Append(sz_tablename); CSqlStatement* smt = m_sqlite.Statement(sz_sql); if (smt!=NULL) { if(smt->Fields()>0)//表存在 ret = true; } return ret; }