热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

SQLite3是个非常不错的轻量级开源数据库,完全0配置。美中不足是它是c代码写的,mfc里使用稍有不便,终于在CP上找到了一个很好的对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;iGetRowCount();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


推荐阅读
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文主要复习了数据库的一些知识点,包括环境变量设置、表之间的引用关系等。同时介绍了一些常用的数据库命令及其使用方法,如创建数据库、查看已存在的数据库、切换数据库、创建表等操作。通过本文的学习,可以加深对数据库的理解和应用能力。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 如何用JNI技术调用Java接口以及提高Java性能的详解
    本文介绍了如何使用JNI技术调用Java接口,并详细解析了如何通过JNI技术提高Java的性能。同时还讨论了JNI调用Java的private方法、Java开发中使用JNI技术的情况以及使用Java的JNI技术调用C++时的运行效率问题。文章还介绍了JNIEnv类型的使用方法,包括创建Java对象、调用Java对象的方法、获取Java对象的属性等操作。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 本文介绍了一种轻巧方便的工具——集算器,通过使用集算器可以将文本日志变成结构化数据,然后可以使用SQL式查询。集算器利用集算语言的优点,将日志内容结构化为数据表结构,SPL支持直接对结构化的文件进行SQL查询,不再需要安装配置第三方数据库软件。本文还详细介绍了具体的实施过程。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Windows7 64位系统安装PLSQL Developer的步骤和注意事项
    本文介绍了在Windows7 64位系统上安装PLSQL Developer的步骤和注意事项。首先下载并安装PLSQL Developer,注意不要安装在默认目录下。然后下载Windows 32位的oracle instant client,并解压到指定路径。最后,按照自己的喜好对解压后的文件进行命名和压缩。 ... [详细]
author-avatar
z235235_795
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有