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);
}
相关推荐
fpcc1 小时前
c++编程实践—堆和栈越界调试
c++
weiabc3 小时前
MSYS2 UCRT64 + g++ C++ 中文输出乱码 完整全过程
c++
灯澜忆梦4 小时前
【面向对象编程C++】| 基础语法
java·c++·算法
aqiu1111115 小时前
【C++算法打怪专栏】LeetCode 165. 比较版本号(双指针与字符串流法)
c++·算法·leetcode
chenbingjie_c6 小时前
C++ STL 适配器:stack & queue,从 vector/list 到 deque 深度解析
数据结构·c++
hetao17338379 小时前
2026-10-08 hetao1733837 的刷题记录
c++·算法
Frank_refuel10 小时前
【C++】智能指针
开发语言·c++
一只旭宝10 小时前
数据结构与算法复习手册:从写过,到讲清楚
开发语言·数据结构·c++·算法
十五年专注C++开发11 小时前
std::filesystem::exists 在有的win10系统抛异常原因分析
c++·文件系统·filesystem
hetao173383711 小时前
2026-10-07 hetao1733837 的刷题记录
c++·算法