本文基于无幻写的VC连接SQLite3的方法(MFC封装类) 在此基础上增加对数据库中表是否存在的判断,自己愚见,仅供参考。阅读此为前最好先阅读VC连接SQLite3的方法(MFC封装类),不然会不知所以然。不说什么,直接上代码:
SELECT COUNT(*) asCNT FROMsqlite_masterwhere type='table' and name='DBInfo' //其中DBInfo为需要判断的表名
但在这由于MFC对sqlite3的封装,所以,试了多次而不得,这是我的解决方案:自己写封装函数:
在DBsqlite.h中:
BOOLResultStep();
BOOLExcuteResult(LPCSTR stmt);
在DBsqlite.cpp中:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
C++ Code判断表是否存在代码如下:
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
////////////////////////数据库操作////////////////////////////// BOOLflag; CDbsqlitesqlite; //连接打开sqlite数据库(创建或打开) flag=sqlite.Open(_T("downloadinfo.db")); if(!flag) { AfxMessageBox(_T("打不开downloadinfo.db")); returnFALSE; } flag=sqlite.ExcuteResult(_T("SELECT*FROMdowncfg")); if(!flag) {//表不存在 //创建表 flag=sqlite.DirectStatement( _T("CREATETABLEdowncfg(cfgfilevarchar(50),downlinkvarchar(300))") ); } ///////////////////////////////////////////////////////////////////// |
自己愚见,这里仅作记录。