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

前端之家收集整理的这篇文章主要介绍了MFC下支持中文的SQLite3封装类使用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  1. @H_301_1@从cp上下载得到sqlite_Wrapper文件夹下的2个文件sqlite.cpp和sqlite.h
  2. @H_301_1@从sqlite3官网下下载源代码文件sqlite3.h,及编译好的库文件sqlite3.lib(从源代码编译成库文件参考这个文档)
  3. @H_301_1@将以上4个文件放入同一个文件夹@H_301_1@sqlite_Wrapper下
  4. @H_301_1@新建MFC对话框应用程序,注意有一个选项“USE MFC”选择为“Use MFC in a Shared DLL”
  5. @H_301_1@将第3步的@H_301_1@sqlite_Wrapper文件夹放到工程目录
  6. @H_301_1@xxxDlg.h文件里写入
    #include "sqlite_Wrapper/sqlite.h"
    #pragma comment(lib,"sqlite_Wrapper/sqlite3.lib") 
    using namespace sqlite;

  7. @H_301_1@@H_301_1@xxxDlg.h文件里声明数据库
    private:
    	Database m_db;


  8. @H_301_1@@H_301_1@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. @H_301_1@编译运行对话框,确定关闭之后,工程目录文件夹下出现数据库文件
  10. @H_301_1@用sqliteSpy软件打开这个数据库db文件,得到中文字符的结果
@H_301_1@======================================================================
@H_301_1@2015.4.21下面做点稍微复杂的查询工作。
  1. @H_301_1@按照上面的内容创建一个内容多点的表
    	m_db.Open(_T("中文.db"));
    	m_db.Executesql(_T("CREATE TABLE 学生信息(学号 INTEGER PRIMARY KEY,姓名 VARCHAR(12),成绩 INTEGER);" ));
    	m_db.Executesql(_T("INSERT INTO \"学生信息\" VALUES(NULL,'小明',90);"));
    	m_db.Executesql(_T("INSERT INTO \"学生信息\" VALUES(NULL,'小王',80);"));
    	m_db.Executesql(_T("INSERT INTO \"学生信息\" VALUES(NULL,2,'小李',70);"));
    	m_db.Executesql(_T("INSERT INTO \"学生信息\" VALUES(NULL,4,'小张',75);"));
    	m_db.Close();

  2. @H_301_1@结果是这样。
  3. @H_301_1@下面要用到这个类的查询语句
    Table Querysql( LPCTSTR strsql );
    TablePtr Querysql2( LPCTSTR strsql );//返回的是查询结果表的指针
    

  4. @H_301_1@这里查询年龄=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,m_pTable->GetValue(1));
    		m_DBList.SetItemText(i,m_pTable->GetValue(2));
    		m_DBList.SetItemText(i,m_pTable->GetValue(3));
    		m_DBList.SetItemText(i,m_pTable->GetValue(4));
    
    		m_pTable->GoNext();
    	}
    	

  5. @H_301_1@可以得到结果
  6. @H_301_1@END

猜你在找的Sqlite相关文章