SQLiteHelper

方便进行数据库的操作

SQLiteHelper.h

cpp 复制代码
#if !defined(AFX_SQLITEHELPER_H__59F8C44E_0D98_4422_AEB1_2FD927EE8902__INCLUDED_)
#define AFX_SQLITEHELPER_H__59F8C44E_0D98_4422_AEB1_2FD927EE8902__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "sqlite3.h"
#include <vector>
#pragma  comment(lib,"sqlite3.lib")

using namespace std;

typedef int(*callBackFun)(void*, int, char**, char**);

class SQLiteHelper
{
public:
	SQLiteHelper();
	~SQLiteHelper();

	sqlite3* getSqlite();
	//打开数据库
	bool OpenSqlite(CString strPath);
	//关闭数据库连接
	void CloseSqlite();
	//执行不返回数据的SQL语句(增、删、改)
	void ExecuteSqlite(CString& strSql);
	//执行查询操作
	void InquireSqlite(CString& strSql, callBackFun pCallfun);
	//获取字段名称
	int GetTableField(CString sTableName, vector<CString>& vTableField);
	//输出错误信息
	void OutPutInfo(CString strInfo);
private:
	sqlite3* pDB;
};

#endif // !defined(AFX_SQLITEHELPER_H__59F8C44E_0D98_4422_AEB1_2FD927EE8902__INCLUDED_)

SQLiteHelper.cpp

cpp 复制代码
#include "stdafx.h"
#include "SQLiteHelper.h"

SQLiteHelper::SQLiteHelper()
{
	pDB = NULL;
}

SQLiteHelper::~SQLiteHelper()
{
}

sqlite3* SQLiteHelper::getSqlite()
{
	return pDB;
}

bool SQLiteHelper::OpenSqlite(CString strPath)
{
	int nRes = sqlite3_open(strPath, &pDB);
	if (nRes != SQLITE_OK)
	{
		 CString cErrMsg = sqlite3_errmsg(pDB);

		OutPutInfo(cErrMsg);
		return false;
	}

	return true;
}

void SQLiteHelper::CloseSqlite()
{
	sqlite3_close(pDB);
}

void SQLiteHelper::ExecuteSqlite(CString& strSql)
{
	char* cErrMsg;
	int nRes = sqlite3_exec(pDB, strSql, 0, 0, &cErrMsg);
	if (nRes != SQLITE_OK)
	{
		OutPutInfo(cErrMsg);
	}
}

void SQLiteHelper::InquireSqlite(CString& strSql, callBackFun pCallfun)
{
	char* cErrMsg;
	int nRes = sqlite3_exec(pDB, strSql, pCallfun, 0, &cErrMsg);
	if (nRes != SQLITE_OK)
	{
		OutPutInfo(cErrMsg);
	}
}

int SQLiteHelper::GetTableField(CString sTableName,vector<CString>& vTableField)
{
	char** pResult = NULL;
	int nRow = 0;
	int nCol = 0;
	CString strSql = "select * from " + sTableName;
	int rc = sqlite3_get_table(pDB, strSql, &pResult, &nRow, &nCol, NULL);
	if (rc == SQLITE_OK)
	{
		for (int i = 0; i < nCol; i++)
		{
			vTableField.push_back(pResult[i]);
		}
	}
	sqlite3_free_table(pResult);
	return rc;
}

void SQLiteHelper::OutPutInfo(CString strInfo)
{
	AfxMessageBox(strInfo);
}
相关推荐
charlie1145141917 小时前
Cinux —— 给物理内存建账本:bitmap 物理内存管理器
开发语言·c++·操作系统·开源项目
2301_777998349 小时前
Linux线程同步与互斥(三):信号量与环形队列实现生产者消费者模型
linux·c语言·c++
啦啦啦啦啦zzzz9 小时前
设计模式:单例模式和工厂模式
c++·单例模式·设计模式·工厂模式
Henry Zhu12310 小时前
C++ 动态多态详解
c++
此生决int10 小时前
深入理解C++系列(06)——模版初阶与STL
开发语言·c++
c2385610 小时前
《枚举算法 “翻译官”:用 enum class 给 “游游的礼盒” 算分》
c语言·c++·算法
noipp10 小时前
推荐题目:洛谷 P5843 [SCOI2012] Blinker 的噩梦
c语言·数据结构·c++·算法·游戏·洛谷·luogu
鱼子星_11 小时前
《算 · 法》题目解析篇(1):最近公共祖先问题,线段树,最长回文子序列
c++·算法·动态规划·递归
计算机内卷的N天12 小时前
CMake与Visual Studio的使用
c++·ide·visual studio
汉克老师12 小时前
GESP2026年3月认证C++七级( 第三部分编程题(1、物流网络))精讲
c++·最短路·gesp7级