博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC下支持中文的SQLite3封装类使用
阅读量:4153 次
发布时间:2019-05-25

本文共 2100 字,大约阅读时间需要 7 分钟。

SQLite3是个非常不错的轻量级开源数据库,完全0配置。美中不足是它是c代码写的,mfc里使用稍有不便,终于在CP上找到了一个很好的对SQLite3进行封装的类,原文地址在。本文所有代码及SQLiteSpy在资源下载。这里记录在mfc中对话框模式下简单应用。

  1. 从cp上下载得到SQLite_Wrapper文件夹下的2个文件SQLite.cpp和SQLite.h
  2. 从SQLite3官网下下载源代码文件SQLite3.h,及编译好的库文件SQLite3.lib(从源代码编译成库文件参考文档)
  3. 将以上4个文件放入同一个文件夹SQLite_Wrapper下
  4. 新建MFC对话框应用程序,注意有一个选项“USE MFC”选择为“Use MFC in a Shared DLL”
  5. 将第3步的SQLite_Wrapper文件夹放到工程目录
  6. xxxDlg.h文件里写入
    #include "SQLite_Wrapper/SQLite.h"#pragma comment(lib,"SQLite_Wrapper/sqlite3.lib") using namespace SQLite;
  7. xxxDlg.h文件里声明数据库类
    private:	Database m_db;
  8. xxxDlg.cpp文件里OnInitDialog()函数写入
    m_db.Open(_T("中文.db"));	m_db.ExecuteSQL(_T("CREATE TABLE 学生信息(学号 INTEGER PRIMARY KEY,年龄 INTEGER,班级 INTEGER,姓名 VARCHAR(12));" ));	m_db.ExecuteSQL(_T("INSERT INTO \"学生信息\" VALUES(NULL , 11, 1 , '明');"));	m_db.ExecuteSQL(_T("INSERT INTO \"学生信息\" VALUES(NULL , 12, 3 , '王');"));
  9. 编译运行对话框,确定关闭之后,工程目录文件夹下出现数据库文件
  10. SQLiteSpy 软件打开这个数据库db文件,得到中文字符的结果
======================================================================
2015.4.21下面做点稍微复杂的查询工作。
  1. 按照上面的内容创建一个内容多点的表
    m_db.Open(_T("中文.db"));	m_db.ExecuteSQL(_T("CREATE TABLE 学生信息(学号 INTEGER PRIMARY KEY,年龄 INTEGER,班级 INTEGER,姓名 VARCHAR(12),成绩 INTEGER);" ));	m_db.ExecuteSQL(_T("INSERT INTO \"学生信息\" VALUES(NULL , 11, 1 , '小明', 90);"));	m_db.ExecuteSQL(_T("INSERT INTO \"学生信息\" VALUES(NULL , 12, 3 , '小王', 80);"));	m_db.ExecuteSQL(_T("INSERT INTO \"学生信息\" VALUES(NULL , 12, 2 , '小李', 70);"));	m_db.ExecuteSQL(_T("INSERT INTO \"学生信息\" VALUES(NULL , 11, 4 , '小张', 75);"));	m_db.Close();
  2. 结果是这样
  3. 下面要用到这个类的查询语句
    Table QuerySQL( LPCTSTR strSQL );TablePtr QuerySQL2( LPCTSTR strSQL );//返回的是查询结果表的指针
  4. 这里查询年龄=12的信息,先在.h里声明
    TablePtr m_Table;	Table* m_pTable;
    cpp里写
    m_Table = m_db.QuerySQL2(_T("SELECT * FROM 学生信息 WHERE 年龄=12"));	m_pTable = m_Table.m_pTable;//m_pTable指向查询结果	for (int i=0;i
    GetRowCount();i++) { m_DBList.InsertItem(i,m_pTable->GetValue(0)); m_DBList.SetItemText(i, 1, m_pTable->GetValue(1)); m_DBList.SetItemText(i, 2, m_pTable->GetValue(2)); m_DBList.SetItemText(i, 3, m_pTable->GetValue(3)); m_DBList.SetItemText(i, 4, m_pTable->GetValue(4)); m_pTable->GoNext(); }
  5. 可以得到结果
  6. END

你可能感兴趣的文章
Ubuntu 14.04安装docker
查看>>
docker registry服务端无法提供https服务 问题解决
查看>>
docker容器设置静态id启动
查看>>
不同主机间的 Docker 容器相互通信
查看>>
docker清理命令
查看>>
SHELL编程
查看>>
shell中的判断表达式
查看>>
shell中字符串操作
查看>>
shell expect交互
查看>>
卸载nginx 并重新安装
查看>>
与docker容器交互
查看>>
配置带用户权限的docker registry v2
查看>>
Java NIO之Selector
查看>>
CentOS7下安装MySQL5.7安装与配置
查看>>
VM虚拟机中Linux扩展磁盘空间的方法
查看>>
linux修改磁盘挂载目录
查看>>
J2SE发送http请求并获取返回数据
查看>>
jfreechart饼图和柱状图ajax
查看>>
Centos新建永久网桥
查看>>
js滚动图片新闻
查看>>