1、今天已经10.24号了,最近一个半月一直忙其它的工作了,正好今天是程序员节,记录一下MFC中Sqllite数据库的使用,之前在QT中已经使用过Sqllite数据库了。

封装类:

#pragma once
#include "sqlite3.h"class CSqlliteHandler
{
public:CSqlliteHandler(void);~CSqlliteHandler(void);long Initialize();long Release();long Open();bool Close();bool GetTimeByVehicleID(char* pID, char* pTime);static int SelectCallback(void *data, int argc, char **argv, char **azColName);bool InsertTimeofVehicleID(char* pID, char* pTime);bool UpdateTimeOfVehicleID(char* pID, char* pTime);private:sqlite3* m_sCon;bool m_bConnect;CLog m_log;
};
#include "StdAfx.h"
#include "SqlliteHandler.h"CSqlliteHandler::CSqlliteHandler(void)
{m_sCon = NULL;m_bConnect = false;
}CSqlliteHandler::~CSqlliteHandler(void)
{
}long CSqlliteHandler::Initialize()
{CFile file;CFileStatus status;char szSql[LOG_BUF] = {0}, szLog[LOG_BUF] = {0};m_log.Initialize("Sqllite");m_log.LogMessage("**************************模块启动*************************");if (file.GetStatus("TrainID.db", status)){if (status.m_size > 0){return -1;}}else{if (!file.Open("TrainID.db", CFile::modeCreate)){return 0;}file.Close();}sqlite3* Conn = NULL;char* pErrMsg = NULL;if(sqlite3_open("TrainID.db", &Conn) != SQLITE_OK){sprintf(szLog, "无法连接到TrainID.db文件,错误代码: %s\n", sqlite3_errmsg(Conn));m_log.LogMessage(szLog);return 0;}sprintf(szSql, "CREATE TABLE VEHICLEINFO \(VEHICLE_ID VARCHAR2(7) PRIMARY KEY, CREATE_TIME VARCHAR2(24))");if (sqlite3_exec(Conn, szSql, NULL, NULL, &pErrMsg) != SQLITE_OK) { sprintf(szLog, "无法创建表VEHICLEINFO,错误代码: %s\n", sqlite3_errmsg(Conn));m_log.LogMessage(szLog);return 0; } if (sqlite3_close(Conn) != SQLITE_OK){sprintf(szLog, "无法关闭连接,错误代码: %s\n", sqlite3_errmsg(Conn));m_log.LogMessage(szLog);return 0;}return 1;
}long CSqlliteHandler::Release()
{if (m_sCon){Close();}m_log.LogMessage("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&模块退出&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");return -1;
}long CSqlliteHandler::Open()
{CFile file;CFileStatus status;if (!file.GetStatus("TrainID.db", status)){m_bConnect = false;m_log.LogMessage("Open():TrainID.db 文件不存在,请重新启动程序.");return -1;}if (sqlite3_open("TrainID.db", &m_sCon) != SQLITE_OK){m_bConnect = false;m_log.LogMessage("Open():数据库打开失败.");return 0;}m_bConnect = true;return 1;
}bool CSqlliteHandler::Close()
{if (sqlite3_close(m_sCon) != SQLITE_OK){m_sCon = NULL;m_bConnect = false;m_log.LogMessage("Close():关闭数据库连接失败.");return false;}return true;
}int CSqlliteHandler::SelectCallback(void *data, int argc, char **argv, char **azColName)
{char* pTime = (char*)data;if(argc == 1 && pTime != NULL)strcpy(pTime, argv[0]);return 0;
}bool CSqlliteHandler::GetTimeByVehicleID(char* pID, char* pTime)
{int nRet = 0;char* pErrMsg = NULL;char szSql[LOG_BUF] = {0}, szLog[LOG_BUF] = {0};if (!m_bConnect){if (1 != Open()){return false;}}sprintf(szSql, "select CREATE_TIME from VEHICLEINFO where VEHICLE_ID='%s'", pID);if (sqlite3_exec(m_sCon, szSql, SelectCallback, (void*)pTime, &pErrMsg) != SQLITE_OK) { sprintf(szLog, "GetTimeByVehicleID:查询错误,错误代码: %s\n", sqlite3_errmsg(m_sCon));m_log.LogMessage(szLog);return false; } return true;
}bool CSqlliteHandler::InsertTimeofVehicleID(char* pID, char* pTime)
{char* pErrMsg = NULL;char szSql[LOG_BUF] = {0}, szLog[LOG_BUF] = {0};if (!m_bConnect){if (1 != Open()){return false;}}sprintf(szSql, "INSERT INTO VEHICLEINFO (VEHICLE_ID, CREATE_TIME) VALUES ('%s','%s' )", pID, pTime);if (sqlite3_exec(m_sCon, szSql, NULL, NULL, &pErrMsg) != SQLITE_OK) { sprintf(szLog, "InsertTimeofVehicleID:插入错误,错误代码: %s\n", sqlite3_errmsg(m_sCon));m_log.LogMessage(szLog);return false; } return true;
}bool CSqlliteHandler::UpdateTimeOfVehicleID(char* pID, char* pTime)
{char* pErrMsg = NULL;char szSql[LOG_BUF] = {0}, szLog[LOG_BUF] = {0};if (!m_bConnect){if (1 != Open()){return false;}}sprintf(szSql, "UPDATE VEHICLEINFO SET CREATE_TIME='%s' WHERE VEHICLE_ID='%s'", pTime, pID);if (sqlite3_exec(m_sCon, szSql, NULL, NULL, &pErrMsg) != SQLITE_OK) { sprintf(szLog, "UpdateTimeOfVehicleID:插入错误,错误代码: %s\n", sqlite3_errmsg(m_sCon));m_log.LogMessage(szLog);return false; } return true;
}

参考:

https://blog.csdn.net/wang93it/article/details/72280841

https://blog.csdn.net/teleger/article/details/85067871

https://blog.csdn.net/qsyzb/article/details/49389621

https://blog.csdn.net/weixin_34223655/article/details/90104538

https://blog.csdn.net/williamluo67/article/details/95464591

https://blog.csdn.net/u012351051/article/details/90382391

实例:

https://download.csdn.net/download/wb547470244/8500287

MFC中使用Sqllite数据库相关推荐

  1. MFC中链接access2013数据库

    今天在MFC中链接数据库时,一直失败,但是把access另存为03的mdb就没问题,百度了下解决方法,整理如下: 说明:本人使用win7 64位系统,VS2010,access2013 根据网上有些提 ...

  2. VS2010 MFC中对Access数据库基本操作

    添加ADO类,项目->添加类(添加是C++类,不是基于MFC类),名字叫ADOConn; 在stdafx.h中添加: #import "C:\Program Files\Common ...

  3. Java中应用SqlLite数据库

    一.pom.xml中添加配置 <dependency><groupId>org.xerial</groupId><artifactId>sqlite-j ...

  4. mfc从mysql中读取数据类型_在MFC中使用SQlite数据库读取数据

    本人在数据库里面用回调函数来处理读取函数的返回值,回调函数必须使用static类型才可以,这样处理起返回的数据变得非常的麻烦,很难处理结果集. 后来从网上找了一个预编译的例子,放在网上和网友分享. 例 ...

  5. mfc中ado上传image到sql数据库

    mfc中ado上传image到sql server数据库 一.关于mfc的使用就不在此献丑了,直接讲ado连接sql server数据库.    1.我采用的是连接方法是调用一个udl文件中的数据库配 ...

  6. VS2013在MFC中使用ADO方法操作Access2013数据库

    1. 首先创建一个基于对话框的MFC应用程序ADO_ACCESS.sln.然后在stdafx.h头文件末尾添加(网上有说在某个#include后面的添加的,也有说在合适位置添加的,我这里直接添加在最末 ...

  7. MFC中的MainFrame Dlg,App,Doc,View的关系

    MFC中的MainFrame Dlg,App,Doc,View的关系 MainFrame: 主框架类 Dlg 是Dialog 的缩写,表示对话框本身 App类就是这个SDI作为"程序&quo ...

  8. c++:MFC中sqlite3的使用(附实际案例)

    MFC中sqlite3的使用 sqlite3介绍 sqlite3安装 常用API函数 操作流程 接口函数 执行sql语句函数 回调函数 MFC中案例实践 控制台实践 sqlite3介绍 SQLite ...

  9. android如何使用BroadcastReceiver后台实现来电通话记录的监听并存取到sqllite数据库通过Contentprovilder实现接口...

    BroadcastReceiver 是android四大组件的一个,本质上是一种全局的监听器,用于监听全局的广播消息.下面实现了后台监听android手机通话记录.本demo分两个程序,第一个程序是设 ...

最新文章

  1. python调用c静态库,静态库(.lib)到Python项目
  2. 如何让一滴水不蒸发?
  3. mysql 郝朝阳_秒级故障切换!用MHA轻松实现MySQL高可用(三)
  4. 深度探讨验证码发展史,账户中心安全科普文
  5. OO ALV 工具栏对于的功能码
  6. Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since
  7. 【异常】INFO: TopologyManager: EndpointListener changed ...
  8. 字节跳动算法工程师总结:java自学路线及推荐书籍
  9. SQLServer之修改标量值函数
  10. 数千万智能手机集体脱机?罪魁祸首是……
  11. sonar扫描android项目配置 mac版
  12. AI总监Karpathy亲自揭秘特斯拉纯视觉系统,还有自动驾驶超算Dojo原型
  13. virtualbox centos并配置网络使宿主机和虚拟机能够互相访问 host-only
  14. OpenDDS简单示例,轻松入门
  15. 围棋棋手、电影、境界层次
  16. 学计算机电脑硬盘容量多大好,电脑系统盘应该分多大空间最合适,赶紧学习一下...
  17. 如何讲好一个故事(6个要素)
  18. 《阿甘正传》英文原版剧本(场景+台词)(看电影学英语的最佳材料)
  19. 3.2.3.2Golang的数据类型--字符串
  20. 【T6】打印总账的时候提示:打印机缺纸(错误号:1001)

热门文章

  1. NFC音响耳机、故事机
  2. CAPWAP隧道建立交互过程
  3. SPS 所有信息分析
  4. 日记类App原型制作分享-Grid Diary
  5. arecord录音报错的解决办法
  6. 胡思乱想小记:为什么感觉英语单词比汉字还难记?
  7. HTML下拉列表选择方法
  8. 萌新学Java之渐入佳境一----初识多线程
  9. 转载:HP大中华区总裁孙振耀退休感言(同勉)
  10. 微信服务号怎样做到每天推送一条消息?