SQLite判断表存在的方法——我的解决方案(MFC)

本文基于无幻写的VC连接SQLite3的方法(MFC封装类) 在此基础上增加对数据库中表是否存在的判断,自己愚见,仅供参考。阅读此为前最好先阅读VC连接SQLite3的方法(MFC封装类),不然会不知所以然。不说什么,直接上代码:

网上说判断SQLite判断表存在的方法是使用sql语句:

SELECT COUNT(*)  as CNT FROM sqlite_master where type='table' and name='DBInfo' //其中DBInfo为需要判断的表名

但在这由于MFC对SQLite3的封装,所以,试了多次而不得,这是我的解决方案:自己写封装函数:

在DBSqlite.h中:

class CsqlStatement类中添加:

BOOLResultStep();

Class CDbSQLite类中添加:

BOOLExcuteResult(LPCSTR stmt);

在DBSqlite.cpp中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
BOOL CSqlStatement::ResultStep()   
{
    //return _sqlite3_column_count(m_stmt);
    if (NULL == m_stmt)
    {
        return FALSE;
    }
    return TRUE;
}

BOOL CDbSQLite::ExcuteResult(LPCTSTR stmt)  // 获得返回结果值
{
    CSqlStatement* pStatement = this->Statement(stmt);
    BOOL fResult = pStatement->ResultStep();
    delete pStatement;

    return fResult;
}

 C++ Code 判断表是否存在代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
数据库操作//
    BOOL flag; 
    CDbSQLite sqlite;
    //连接打开SQLite数据库(创建或打开) 
    flag = sqlite.Open(_T("downloadinfo.db")); 
    if (!flag) 
    { 
        AfxMessageBox(_T("打不开downloadinfo.db")); 
        return FALSE; 
    }
    flag = sqlite.ExcuteResult(_T("SELECT * FROM downcfg"));
    if (!flag)
    {// 表不存在
        // 创建表
        flag = sqlite.DirectStatement(
                        _T("CREATE TABLE downcfg(cfgfile varchar(50), downlink varchar(300))")
                        );
    }
/

自己愚见,这里仅作记录。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值