创建数据库

1.用navicat创建sqlite数据库,名称为student

2.填写数据库内容

VS2017MFC操作

1.添加以下类及配置文件到程序文件夹中

并在CDxxxxDlg程序中添加SDDb.cpp和SDDb.h文件
在CDxxxxDlg.h程序中添加预编译头文件
#include"sqlite3.h"
在CDxxxxDlg.cpp程序中添加预编译头文件
#include
#include"sqlite3.h"
#include “SDDb.h”

2.在SDDb.cpp中更改数据库文件名称为“student.db”

3.用多线程的方式读取数据库文件,添加一个按钮,添加以下代码

void CDatabaseDlg::OnBnClickedButton1Load()
{// TODO: 在此添加控件通知处理程序代码if (m_hTread == NULL){m_hTread=::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)CDatabaseDlg::ThreadProc, this, 0, NULL);}
}UINT CDatabaseDlg::ThreadProc(void* param1, void* param2)//线程函数
{CDatabaseDlg* pThis = (CDatabaseDlg*)param1;pThis->LoadUser();return 0;
}//sqlite3* db;
void CDatabaseDlg::LoadUser()
{::CoInitialize(NULL);//每个操作数据库的线程都要加这个ReadList();/*int result = sqlite3_open("student.db", &db);if(result != SQLITE_OK){MessageBox(NULL, TEXT("打开数据库失败"), MB_OK);return ;}else{MessageBox(NULL, TEXT("打开数据库成功"), MB_OK);}*//*CSDDb &pDB = CSDDb::GetInstance();int row, col;vector<vector<string>> data;string sql = "SELECT * FROM RESULTLIST";pDB.GetDataCount(sql, row, col);tolist(NULL, row);pDB.GetDataInfo(sql, data);tolistPP(data, row, col);*/
}void CDatabaseDlg::ReadList()
{bool ret;vector<vector<string>> vecData;vector<vector<string>>::const_iterator row;vector<string>::const_iterator col;string historyRecord = "student";  //填写表的名称string sql = "select * from " + historyRecord;ret = CSDDb::GetInstance().GetDataInfo(sql, vecData);if (ret){string str[10];for (row = vecData.begin(); row != vecData.end(); ++row){int i = 0;for (col = (*row).begin(); col != (*row).end(); ++col){str[i] = *col;i++;}m_list.InsertItem(0, (_bstr_t)str[0].c_str());  //显示第一列m_list.SetItemText(0, 1, (_bstr_t)str[1].c_str());  //显示第二列m_list.SetItemText(0, 2, (_bstr_t)str[2].c_str());  //显示第三列m_list.SetItemText(0, 3, (_bstr_t)str[3].c_str());  //显示第四列m_list.SetItemText(0, 4, (_bstr_t)str[4].c_str());m_list.SetItemText(0, 5, (_bstr_t)str[5].c_str());}}//Invalidate();
}

改变列表框的背景颜色

在初始化程序中添加以下代码:

m_list.SetBkColor(RGB(155, 255, 55));//设置文本背景颜色m_list.SetTextBkColor(RGB(255, 199, 199));//设置文本颜色m_list.SetTextColor(RGB(60, 60, 255));

删除列表框的某一行内容

在初始化程序中添加以下代码

m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);//可以选中所有数据

添加按钮点击事件,并添加程序:

int nItem = m_list.GetSelectionMark();m_list.DeleteItem(nItem);//listctrl内容进行大数据量更新时,避免闪烁m_list.SetRedraw(FALSE);//更新内容m_list.SetRedraw(TRUE);m_list.Invalidate();m_list.UpdateWindow();

https://blog.csdn.net/langxm2006/article/details/55685173?ops_request_misc=%7B%22request_id%22%3A%22158199739619724811813083%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158199739619724811813083&biz_id=0&utm_source=distribute.pc_search_result.none-task

创建数据库并添加内容到数据库

先定义一些宏,用来创建数据库和表

#define SQL_CREATE_TABLE "Create table if not exists student1(id int PRIMARY KEY ASC, name char(10), age char(10), score char(5))"  //创建表
#define SQL_INSERT_DATA "Insert into student1 (id, name, age, score) values (%d, '%s', '%s', '%s')"  //插入表
#define SQL_QUERY_DATA "Select * from student1"    //数据查询

创建一个全局变量

typedef struct _INFO_
{CString name;CString age;  //表的内容CString score;
}Info;sqlite3 *m_pDB;

添加两个按钮函数

void CServerDataDlg::OnBnClickedButton4()
{// TODO: 在此添加控件通知处理程序代码int rc;char * err_msg = NULL;rc = sqlite3_open("student.db", &m_pDB);// 打开数据库,不存在时创建  if (rc){sqlite3_close(m_pDB);  //打开失败!   MessageBox(_T("数据库打开失败,请检查后再操作!"), NULL, MB_ICONSTOP);return;}else{MessageBox(_T("数据库打开成功"));}if (sqlite3_exec(m_pDB, SQL_CREATE_TABLE, NULL, NULL, &err_msg) != SQLITE_OK){MessageBox(_T("操作失败,数据库链表生成错误!"), NULL, MB_ICONSTOP);return;}sqlite3_close(m_pDB);}void CServerDataDlg::OnBnClickedButton7()
{// TODO: 在此添加控件通知处理程序代码int rc;char * err_msg = NULL;char sql[256];rc = sqlite3_open("student.db", &m_pDB);// 打开数据库,不存在时创建  if (rc){sqlite3_close(m_pDB);  //打开失败!   MessageBox(_T("数据库打开失败,请检查后再操作!"), NULL, MB_ICONSTOP);return;}else{MessageBox(_T("数据库打开成功"));}sprintf_s(sql, SQL_INSERT_DATA, 9, "john", "24", "36");int exit = sqlite3_exec(m_pDB, sql, 0, 0, &err_msg);if (exit != SQLITE_OK){sqlite3_close(m_pDB);MessageBox(_T("数据导入失败"));return;}else{MessageBox(_T("数据导入成功"));}}

VS2017+MFC+sqlite数据库操作相关推荐

  1. 数据存储之 SQLite 数据库操作(三)

    上一讲中我们讲到了SQLite数据库的操作方法 [数据存储之SQLite数据库操作(二)],我们主要是以SQL语句对数据库进行增删改查,这一讲我们来学习一下 Android 建议的对数据库的操作方法 ...

  2. 数据存储之 SQLite 数据库操作(二)

    上一讲我们讲解了SQLite数据库的创建[数据存储之 SQLite 数据库操作(一)],还有更新的操作,这一讲我们来讲解一下数据库的增删改查,这边的程序是对上一个程序进行修改,建议结合上一讲内容进行学 ...

  3. Qt下Sqlite数据库操作

    Sqlite数据库作为Qt项目开发中经常使用的一个轻量级的数据库,可以说是兼容性相对比较好的数据库之一(Sqlite就像Qt的亲儿子,如同微软兼容Access数据库一样).关于Sqlite和Qt的千丝 ...

  4. C# SQLite 数据库操作语句与文件视图管理器

    //sqlite数据库视图管理器 SQLiteSpy是一款专业的SQLite数据库管理,主要用于读取sqlite数据库,建立新的SQL查询,视图,复制和删除表.编辑单元格,以及查看索引,触发器和排序规 ...

  5. java sqlite 操作_Java SQLite 数据库操作

    Java SQLite 数据库操作 1.[代码][Java]代码 package UI; import java.sql.Connection; import java.sql.DriverManag ...

  6. 实验8 SQLite数据库操作

    实验报告 课程名称 基于Android平台移动互联网开发 实验日期 2016/5/6 实验项目名称 SQLite数据库操作 实验地点 综合实验室 实验类型 □验证型    √设计型    □综合型 学 ...

  7. Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤

    AHibernate简介 一句话描述,使用AHibernate框架进行sqlite数据库操作您将从重复性劳动中解脱出来. (一)支持功能: 1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并 ...

  8. SQLite数据库操作实践

    SQLite数据库操作实践 SQLite存储类型 null       - 空值  integer - 有符号整数,自增列定义 id integer primary key autoincrement ...

  9. SQLite数据库操作+事务处理

    SQLite数据库操作 SQLite数据库介绍 Android系统中集成的轻量级的数据库 特点: 轻量级 是以单个文件的形式进行存取 跨平台 支持多个操作系统 零配置 无需安装, 直接使用 嵌入式 内 ...

最新文章

  1. 数据库的定义、模型 和 模式
  2. 【PAT笔记】C++标准模板库STL(二)——set的用法和示例
  3. 位向量(bit vector)(算法导论第十一章11.1-2)
  4. 2015-2016-1学期 《信息安全系统设计基础》课程总结
  5. java 编译中没有清除之前编译出来的文件。
  6. sql 查询数据库索引重建_不良的数据库索引– SQL查询性能的杀手–建议
  7. gluster分布式存储 入门篇
  8. javascript——js string 转 int 注意的问题——parseInt(转)
  9. HDU 3394 Railway(点双连通分量)
  10. 02-CSS基础与进阶-day11_2018-09-17-21-35-14
  11. python监控钉钉群消息_使用python对mysql主从进行监控,并调用钉钉发送报警信息...
  12. matlab对数画图命令,MATLAB命令画图
  13. 向量自回归VAR模型、结构向量自回归SVAR模型、VMA模型
  14. ROS入门之——浅谈launch
  15. hexo入门学习(四):文章(带图片)
  16. 地理信息系统中最基本的两种数据模型:矢量模型和栅格模型
  17. Fantastic Four: 具有恶意安全的诚实大多数四方安全计算
  18. 复位电路加二极管的作用
  19. win10子系统基本备份
  20. python str center_Python str方法总结

热门文章

  1. python调用大漠找图_按键精灵大漠插件找图使用方法
  2. 如何确定IP在同一网段
  3. 致远SPM解决方案之资产管理
  4. 【汇正财经】什么是成长投入策略?
  5. 数据结构:栈(Stack)
  6. 在 Linux 下安装 HM,运行 HEVC 参考代码
  7. DeepFM理论与实践
  8. springboot mybatis 分页
  9. Nginx 报404问题,如何解决
  10. Python升级到最新版本代码