在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. 如何监听Element组件<el-input>标签的回车事件

    一.现象 表单提交时需要处理输入框的回车事件,一般的原生input标签可以用@keyup.enter="onSubmit"(tips:onSubmit为定义的方法) 二.解决 1. ...

  2. angular如何引入公共JS

    一.现象 在项目的开发中,总会用到一些公司的脚本方法,同时,不希望在每个页面用到时又得需要引用,有点麻烦. 二.解决 1.在src文件夹下新建文件夹 utils: 2.在utils下新建文件 comm ...

  3. 28. pt-table-sync

    前提:得有checksum表 pt-table-sync --replicate=pt.checksum \h=192.168.100.101,P=3306,u=admin,p=admin \h=19 ...

  4. U-Mail企业邮箱如何导入授权文件

    首先,由于U-Mail有Linux版本与Windows版本的区别,并且都非常简单,所以就有了下面的步骤: Windows版本  <点击快速跳转> Linux版本 <点击快速跳转> ...

  5. eclipse创建scrapy项目

    1. 您必须创建一个新的Scrapy项目. 进入您打算存储代码的目录中(比如否F:/demo),运行下列命令: scrapy startproject tutorial 2.在eclipse中创建一个 ...

  6. 第一章 odoo的配置(centos7 版)

    一: 简述 (1) odoo是python开发的一款erp软件,目前的最新版本为odoo 11, 支持Python2和Python3, 但odoo 11目测是一个过渡版本,为了稳定,我们还是上odoo ...

  7. SqlSever 使用 CROSS APPLY 与 OUTER APPLY 连接查询

    前言 日常开发中遇到多表查询时,首先会想到 INNER JOIN 或 LEFT OUTER JOIN 等等,但是这两种查询有时候不能满足需求.比如,左表一条关联右表多条记录时,我需要控制右表的某一条或 ...

  8. API setContentType(MIME) 参数说明

    HttpServletResponse的setContentType(MIME) API主要用以告诉浏览器服务器所传递的数据类型或服务器希望浏览器以何种方式解析和展示这些数据 其由两部分构成,如:te ...

  9. dubbo入门学习 一SOA

    SOA是什么?SOA全英文是Service-Oriented Architecture,中文意思是中文面向服务编程,是一种思想,一种方法论,一种分布式的服务架构(具体可以百度). 用途:SOA解决多服 ...

  10. flume1.4.0源码结构剖析

    flume基本思想: source负责收集数据,channel负责缓存数据,sink负责消费channel中的数据,具体使用方式这里不赘述 生命周期管理: 生命周期相关代码在flume-ng-core ...