在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. Linux debug

    proc文件系统中可以查看一些正在运行的变量如device-tree sh-3.2# cat /proc/device-tree/ #address-cells fixedregulator@9/ # ...

  2. hystrix参数详解

    hystrix.command.default和hystrix.threadpool.default中的default为默认CommandKey Execution相关的属性的配置: hystrix. ...

  3. Div+CSS+JQuery实现选项卡,即通过点击不同的li跳转到不同的div中显示不同的内容或者执行不同的操作。

    1.代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html>   ...

  4. How to decode input data from a contract transaction without ABI?

    1 I've found some libraries which decode input from transaction, but all of them require ABI of cont ...

  5. dsPIC30F 细节点问题不定期更新ing

    知识点1 TRISD: I/O 引脚 方向控制 寄存器 (1--input, 0--Output)LATD:  I/O 引脚 输出锁存器PORTD: 是双向I/O 端口 备注:LATD = 0x000 ...

  6. Tigase8.0 源代码分析:一、启动篇

    Tigase8.0 引用了IoC(控制反转)和DI(依赖注入) 等技术手段,来对对象的创建和控制.不懂的百度下就知道了,Spring完美的实现IOC ,贴一段解释: 通俗地说:控制反转IoC(Inve ...

  7. Pixel Recurrent Neural Networks翻译

    Pixel Recurrent Neural Networks 目前主要在用的文档存放: https://www.yuque.com/lart/papers/prnn github存档: https: ...

  8. How to Read a Paper

    How to Read a Paper 原文: https://www.yuque.com/lart/papers/yrkv5u 题目:How to Read a Paper 作者:S. Keshav ...

  9. linux学习第十八天 (Linux就该这么学)

    今天讲了23章节,OPENLDAP安装配置,感觉好难 ,不过考试测试,CA也没有了,主要还讲了数据库mariadb,安装,配置,使用,基本的数据库管理,还讲了,网络安装系统,我暂时先不写其它了,上传图 ...

  10. Java中的Integer和int

    Java中的Integer是引用类型,而int是基本类型.Integer是int的包装器类型. java中的基本类型有布尔类型boolean;字符类型char;整数类型byte,int,long,sh ...