加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-12 19:56:48 所属栏目:百科 来源:网络整理
导读:SQLite3是个非常不错的轻量级开源数据库,完全0配置。美中不足是它是c代码写的,mfc里使用稍有不便,终于在CP上找到了一个很好的对S QLite3进行封装的类,原文地址在这里。本文所有代码及SQLiteSpy在本站资源下载。这里记录在mfc中对话框模式下简单应用。 从

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,姓名 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. 结果是这样。
  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,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. 可以得到结果
  6. END

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读