需要用到的文件有sqlite3.h 、sqlite3.dll、sqlite3.lib。网上很多人分享下载地址这里不再赘述。

将这三个文件拷贝到自己新建MFC项目目录下,在解决方案窗口下 添加现有项,选择sqlite3.h 、sqlite3.dll、sqlite3.lib这三个文件,添加到项目中。

然后自己的.cpp中#include “sqlite3.h”

一些宏定义:

#define SQL_CREATE_TABLE "Create table if not exists stu_info(id int PRIMARY KEY ASC, subject char(10), name char(10), mark char(5))"#define SQL_INSERT_DATA "Insert into stu_info (id, subject, name, mark) values (%d, '%s', '%s', '%s')"#define SQL_QUERY_DATA "Select * from stu_info"

以及自定义管理struct

typedef struct _INFO_
{
CString subject;
CString name;
CString mark;
}Info;
sqlite3 *m_pDB;

1、创建数据库:

int rc;
char * err_msg = NULL;  rc = sqlite3_open("myDatabase.db", &m_pDB);// 打开数据库,不存在时创建
if (rc)
{
sqlite3_close(m_pDB);  //打开失败!
MessageBox(_T("数据库打开失败,请检查后再操作!"), NULL, MB_ICONSTOP);
return ;
} if (sqlite3_exec(m_pDB, SQL_CREATE_TABLE, NULL, NULL, &err_msg) != SQLITE_OK)
{
MessageBox(_T("操作失败,数据库链表生成错误!"), NULL, MB_ICONSTOP);
return;
}
sqlite3_close(m_pDB);

2、插入数据

int rc;
char * err_msg = NULL;
char sql[256];rc = sqlite3_open("myDatabase.db", &m_pDB);// 打开数据库,不存在时创建
if (rc)
{
sqlite3_close(m_pDB);  //打开失败!
MessageBox(_T("数据库打开失败,请检查后再操作!"), NULL, MB_ICONSTOP);
return ;
} sprintf_s(sql, SQL_INSERT_DATA, 1, "Java", "John", "3");
int exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);
if (exit!=SQLITE_OK)
{
sqlite3_close(m_pDB);
return;
}sprintf_s(sql, SQL_INSERT_DATA, 2, "C", "Deny", "1");
exit = sqlite3_exec(m_pDB,sql, 0 ,0, &err_msg);
if (exit!=SQLITE_OK)
{
sqlite3_close(m_pDB);
return;
}sprintf_s(sql, SQL_INSERT_DATA, 3, "C++", "James", "8");
exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);
if (exit!=SQLITE_OK)
{
sqlite3_close(m_pDB);
return;
}sprintf_s(sql, SQL_INSERT_DATA, 4, "C#", "Killy", "5");
exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);
if (exit!=SQLITE_OK)
{
sqlite3_close(m_pDB);
return;
}sqlite3_close(m_pDB);  

3、查询数据,两种方式都可以实现:

方式1:

int rc;
rc = sqlite3_open("myDatabase.db", &m_pDB);// 打开数据库,不存在时创建
if (rc)
{
sqlite3_close(m_pDB);  //打开失败!
MessageBox(_T("数据库打开失败,请检查后再操作!"), NULL, MB_ICONSTOP);
return ;
}
CArray<Info> arr;
sqlite3_stmt *stmt;
rc=sqlite3_prepare_v2(m_pDB, SQL_QUERY_DATA, -1, &stmt, 0);
if (rc!=SQLITE_OK)
{
sqlite3_finalize(stmt);
sqlite3_close(m_pDB);
return;
}
rc = sqlite3_step(stmt);
while(rc == SQLITE_ROW )
{
Info info;
info.subject = sqlite3_column_text(stmt,1);
info.name = sqlite3_column_text(stmt,2);
info.mark = sqlite3_column_text(stmt,3);
arr.Add(info);
rc = sqlite3_step(stmt);
}
sqlite3_finalize(stmt);
sqlite3_close(m_pDB);

方式2:

int rc;
char * err_msg = NULL;
rc = sqlite3_open("myDatabase.db", &m_pDB);// 打开数据库,不存在时创建
if (rc)
{
sqlite3_close(m_pDB);  //打开失败!
MessageBox(_T("数据库打开失败,请检查后再操作!"), NULL, MB_ICONSTOP);
return ;
} int row=0;
int colum=0;
char **azResult;
CArray<Info> arr;
rc=sqlite3_get_table(m_pDB,SQL_QUERY_DATA,&azResult,&row,&colum,&err_msg);
for (int i=1; i<row+1; i++)
{
Info info;
info.subject= *(azResult+i*colum+1);
info.name= *(azResult+i*colum+2);
info.mark= *(azResult+i*colum+3);
arr.Add(info);
}
sqlite3_free_table(azResult);
sqlite3_close(m_pDB);

其他的删除,更新等操作都是类似的。

MFC中使用sqlite3操作数据库 创建,插入数据,查询数据相关推荐

  1. python 笔记 之 sqlalchemy操作数据库-创建表

    2019独角兽企业重金招聘Python工程师标准>>> ''' pip install SQLAlchemy 操作数据库-创建表 ''' import sqlalchemy''' s ...

  2. ci如何使用中$.ajax 中的 url 如何使用php的代码,CI框架中使用ajax操作数据库有关问题...

    CI框架中使用ajax操作数据库问题 本帖最后由 A9925 于 2014-11-24 16:11:05 编辑 前台: //调用方法用ajax操作add_dbdata.php var xmlHttp ...

  3. 【C 语言】文件操作 ( 学生管理系统 | 插入数据 | 查询数据 | 删除数据 )

    文章目录 一.学生管理系统 1.插入数据 2.查询数据 3.删除数据 二.完整代码 一.学生管理系统 实现一个简易学生管理系统 , 验证文件操作 ; 1.插入数据 从命令行接收数据 , 放入结构体成员 ...

  4. shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机...

    shell编程系列25--shell操作数据库实战之备份MySQL数据,并通过FTP将其传输到远端主机备份mysql中的库或者表mysqldump 常用参数详解: -u 用户名 -p 密码 -h 服务 ...

  5. 数据库创建(利用写好的数据库表生成创建表的sql语句+利用生成的数据库创建表加同步数据sql)

    一.利用写好的数据库表生成创建表的sql语句 1.简单创建一个数据库,并建一个表,并编辑数据. a.建库 b.建表 c.编辑表,保存时输入表名 d.刷新一下,出来了 e.转存导出sql文件. 二.利用 ...

  6. mfc中在vector里添加控件类型的数据时出现C2248错误

    @mfc中在vector里添加控件类型的数据时出现C2248错误 这是我在.h文件中定义的2个容器 public:vector<CComboBox*> cbx;vector <CSt ...

  7. Code First开发系列之管理数据库创建,填充种子数据以及LINQ操作详解

    本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 L ...

  8. 8天掌握EF的Code First开发系列之3 管理数据库创建,填充种子数据以及LINQ操作详解...

    本文出自8天掌握EF的Code First开发系列,经过自己的实践整理出来. 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LI ...

  9. java数据库返回表格中_Java中sql语句操作数据库及将数据库信息显示在表格中

    首先连接数据库,接着就可以对数据库进行操作了 创建Connection对象,建立与数据库的连接. ResultSet 对象是用来存放操作结果的,也就是SQL查询语句对数据库的查询操作将返回一个Resu ...

最新文章

  1. Y Combinator
  2. python 批量下载文件
  3. 七月算法--12月机器学习在线班-第七次课笔记—最大熵
  4. 【iOS XMPP】使用XMPPFramewok(二):用户登录
  5. kali 安装volatility_虚拟机安装|给你双倍快乐
  6. 机器学习爬大树之(GBDT原理)--二分类篇
  7. maven 打包数据库加密_漫画:工作这么多年,你居然不知道 Maven中 Optional 和 Exclusions 的区别?...
  8. SharePoint 创建 Lookup 类型的Site Column解决跨站问题
  9. VS2010 IDE安装问题
  10. Vue 路由的模块化
  11. 金蝶eas怎么引出凭证_金蝶专业版如何引入引出凭证
  12. MyBatis官方文档-简介
  13. 获取位置geolocation 加速度devicemotion 角度deviceorientation
  14. php laravel vonder
  15. 计算机毕业设计 在线免费小说微信小程序(源码+论文)
  16. 支付退款流程设计_如何设计订单系统?不妨看看这篇文章
  17. 学生开发者对于微软技术的反馈
  18. 第三十一章 : 疑难排解
  19. 【正点原子STM32连载】第五十三章 DSP测试实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  20. 从0开始写出一个最简单的shell(基于x210)

热门文章

  1. 【PTA题目】7-5 阶梯电价 (15 分)
  2. 移动应用广告对接:为什么SDK是最佳选择?
  3. Matlab求矩阵的最小多项式
  4. 使用sqlyog导入数据表到MySql中
  5. Spring Boot 修改tomcat端口
  6. Flask SQLAlchemy 操作数据库已有数据表
  7. 人生观价值观与老生常谈
  8. 标准二寸免冠证件照片要求:
  9. 网络1711班 C语言第四次作业批改总结
  10. TargetSdkVersion升级到30后,安卓11手机上,apk解析失败