在vc环境下支持sqlite3的方法有很多,sqlite官网也有推荐sqlitewrappers列表,我选用的是CppSqlite
建立MFC工程的步骤我就不赘述了,以下操作均假设你已经创建好了一个MFC工程
测试环境:windows7
编译环境:Visual Studio 2015
添加步骤
1、下载压缩文件,我下载的是最新的版本“Download CppSQLite 3.2 demo projects, source and sqlite3.dll for SQLite 3.4.0 - 252 KB”  ,该版本支持SQLite3 3.4
2、解压,将common/文件夹中的CppSQLite3.cpp、CppSQLite3.h、sqlite3.dll、sqlite3.lib四个文件拷贝到你的工程目录下
3、项目->头文件->添加->现有项->在目录中找到CppSQLite3.h并添加;项目->源文件->添加->现有项->找到CppSQLite3.cpp并添加
4、项目右键->属性->链接器->输入中填入sqlite3.lib,自此 你的工程就支持sqlite3啦
类封装说明
介绍几个常用的类:CppSQLiteDB、CppSQLiteQuery
1、CppSQLiteDB
该类主要是对数据库文件的基本操作,包含打开关闭查询等命令,介绍几个常用的函数
a)、open(xxx.db)
功能:打开一个数据库文件
参数:char*类型,数据库文件名
说明:如果该db文件不存在,会创建
b)、close()
功能:关闭数据库文件
参数:无
说明:该函数不需要我们手动调用,CppSQLiteDB的析构函数中会调用
c)、execDML(command)
功能:用于直接执行create/drop/insert/update/delete命令(data manipulation language)
参数:char*类型,要执行的命令
说明:返回值是操作了的行数
d)、execQuery()
功能:用于执行查询信息
参数:执行查询信息的命令
说明:返回值是CppSQLiteQuery类
举例:
CppSQLiteQuery query = db.execQuery("select * from tablename;")
注意:最后需要手动调用query.finalize(),否则,会引起内存泄漏从而导致保存。(文档上说的不用手动释放,目前还没找到原因)
e)、execScalar()
功能:得到当前table的行数
参数:执行命令
说明:返回行数
举例:
int raws = db.execScalar("select count(*) from tablename;")
2、CppSQLiteQuery
CppSQLiteQuery query = db.execQuery("select * from tablename;")
a)、numFields()
功能:得到当前字段数(你可以理解为列数)
参数:无
说明:得到当前的列数
b)、fieldName(int nCols)
功能:得到当前的列标题
参数:某一列的列数(从0开始)
c)、fieldDeclType(int nCols)
功能:得到当前列的元素类型
参数:某一列的列数(从0开始)
这三个函数一般会这样用:

       for (fld = ; fld <query.numFields(); fld++)
{
cout <<query.fieldName(fld) << "(" <<query.fieldDeclType(fld) << ")|";
}
cout << endl;

 

d)、fieldValue(int nCols)
功能:得到当前列的值
参数:某一列的列数(从0开始)
e)、eof()
功能:用于迭代查询结果,与nextRow()配合使用
参数:无
说明:返回值为TRUE时,表示已经到达查询结果的最后一个,终止迭代即可
f)、nextRow()
功能:迭代到查询结果的下一行,长与eof()配合使用
参数:无
这三个函数一般会这样用:

    while (!q.eof())
{
cout << q.fieldValue() << "|"; //得到当前列的值
cout << q.fieldValue() << "|" << endl; //得到当前列的值
q.nextRow();
}
 

在MFC中支持sqlite3的更多相关文章

  1. MFC中使用sqlite3操作数据库

    需要用到的文件有sqlite3.h .sqlite3.dll.sqlite3.lib.网上很多人分享下载地址这里不再赘述. 将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选 ...

  2. 控制台应用程序中添加对MFC的支持

    在windows控制台应用程序中,肯能会想使用一些MFC中的类,如CStringArray等,通过下面两步简单的设置可以添加对MFC的支持: 1.右击工程名 -> References 选择 A ...

  3. MFC中对话框类(Dialog)的应用

    转载http://hi.baidu.com/jackywdx/item/feee8041d2c2e12310ee1e85 Windows应用程序通常是通过对话框接收用户输入.向用户输出信息,本节介绍应 ...

  4. MFC中快速应用OpenCV(转)

    转载链接:http://wiki.opencv.org.cn/index.php/MFC%E4%B8%AD%E5%BF%AB%E9%80%9F%E5%BA%94%E7%94%A8OpenCV 简介和缘 ...

  5. 不使用CvvImage类来在MFC中显示图像

    /* * ===================================================================================== * * Filen ...

  6. MFC中树控件CTreeCtrl的用法

    树形控件可以用于树形的结构,其中有一个根接点(Root)然后下面有许多子结点,而每个子结点上有允许有一个或多个或没有子结点.MFC中使用CTreeCtrl类来封装树形控件的各种操作.通过调用 BOOL ...

  7. 多线程编程之二 ---MFC中的多线程开发

    下载源代码 五.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消 ...

  8. SonicUI在MFC中的使用

    SonicUI是一个GUI引擎,提供了一些简单的UI组件实现高效率的UI效果,例如:自绘按钮.异形窗体.动画.超链接和图像操作方法.此项目作者开源到CodeProject,地址为:http://www ...

  9. 在VC/MFC中嵌入Google地图——图文并茂

    近期须要实验室须要将在无人机地面站中嵌入地图,在网上找了非常多资料,最终有些眉目了, 首先.做这个须要用到的知识有.MFC控件.MFC类库.JavaScript脚本语言.Google API.Goog ...

随机推荐

  1. Python学习笔记4基本数据类型续

    start  16:36 时间格式化 程序计时:指测量起止动作所经历的时间的过程 实例四文本进度条 #a表示星号被复制的的次数 文本进度条的动态刷新 实现刷新功能的简单代码,但你会发现并没有实现在同一 ...

  2. 机器学习--Lasso回归和岭回归

    之前我们介绍了多元线性回归的原理, 又通过一个案例对多元线性回归模型进一步了解, 其中谈到自变量之间存在高度相关, 容易产生多重共线性问题, 对于多重共线性问题的解决方法有: 删除自变量, 改变数据形 ...

  3. 解决overflow: hidden在移动端失效问题

    1.问题:移动端出现弹窗后,滑动页面,页面底部出现空白 二.原因 经过分析,发现overflow: hidden;在移动端失效,导致弹窗出现时,滑动页面,页面底部出现空白. 三.解决 参考网址:htt ...

  4. token回话保持,axios请求拦截和导航守卫以及token过期处理

    1:了解token:有时候大家又说token令牌.整个机制是前端第一次登陆发送请求,后端会根据前端的用户名和密码, 通过一些列的算法的到一个token令牌, 这个令牌是独一无二的,前端每次发送请求都需 ...

  5. 解决Kettle与Kerberos集成问题

    本文目的:记录Kerberos环境下,通过Kettle将MySQL数据清洗到HDFS过程解决的2个问题,希望对大家有所帮助. Kettle版本:pdi-ce-7.1.0.0-12 1.在Kerbero ...

  6. java 判断null和空

    判断null和空 org.apache.commons.lang3 if(StringUtils.isBlank(valuationMeasureUnitName)){ }

  7. oracle 索引提升查询速度, in 和 exist 效率

    做记录: 今天有一个有153万条数据的表,发现查询很慢: select count(y) as transfereeNum,x from t_ast_subject_invest_order GROU ...

  8. 文件操作命令(TYPE)

    type 命令: // 描述: 显示文本文件的内容. 但不能进行修改. // 语法: type [<Drive>:][<Path>]<FileName> // 参数 ...

  9. linux性能监控(转)

    vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...

  10. html 页面 判断第一个反应的网站并进行跳转 模仿CDN

    <!DOCTYPE html><html><head><meta charset="gb2312"><meta http-eq ...