在MFC中支持sqlite3

在vc环境下支持sqlite3的方法有不少,sqlite官网也有推荐sqlitewrappers列表,我选用的是CppSqlite
创建MFC工程的步骤我就不赘述了,如下操做均假设你已经建立好了一个MFC工程
测试环境:windows7
编译环境:Visual Studio 2015
添加步骤
一、下载压缩文件,我下载的是最新的版本“Download CppSQLite 3.2 demo projects, source and sqlite3.dll for SQLite 3.4.0 - 252 KB”  ,该版本支持SQLite3 3.4
二、解压,将common/文件夹中的CppSQLite3.cpp、CppSQLite3.h、sqlite3.dll、sqlite3.lib四个文件拷贝到你的工程目录下
三、项目->头文件->添加->现有项->在目录中找到CppSQLite3.h并添加;项目->源文件->添加->现有项->找到CppSQLite3.cpp并添加
四、项目右键->属性->连接器->输入中填入sqlite3.lib,自此 你的工程就支持sqlite3啦
类封装说明
介绍几个经常使用的类:CppSQLiteDB、CppSQLiteQuery
一、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;")
二、CppSQLiteQuery
CppSQLiteQuery query = db.execQuery("select * from tablename;")
a)、numFields()
功能:获得当前字段数(你能够理解为列数)
参数:无
说明:获得当前的列数
b)、fieldName(int nCols)
功能:获得当前的列标题
参数:某一列的列数(从0开始)
c)、fieldDeclType(int nCols)
功能:获得当前列的元素类型
参数:某一列的列数(从0开始)
这三个函数通常会这样用:
       
 for (fld = 0; 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(0) << "|"; //获得当前列的值 cout << q.fieldValue(1) << "|" << endl; //获得当前列的值  q.nextRow(); }
相关文章
相关标签/搜索