MFC下支持中文的SQLite3封装类使用

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<m_pTable->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

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值