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);
}
相关推荐
myloveasuka38 分钟前
C++进阶:利用作用域解析运算符 :: 突破多态与变量隐藏
开发语言·c++
keep intensify42 分钟前
康复训练 5
linux·c++
0 0 01 小时前
CCF-CSP 38-4 月票发行【C++】考点:动态规划DP+矩阵快速幂
c++·算法·动态规划·矩阵快速幂
OxyTheCrack1 小时前
【C++】详细拆解std::mutex的底层原理
linux·开发语言·c++·笔记
j_xxx404_2 小时前
力扣困难算法精解:串联所有单词的子串与最小覆盖子串
java·开发语言·c++·算法·leetcode·哈希算法
筱砚.3 小时前
C++——lambda
开发语言·c++·算法
sycmancia4 小时前
C++——动态内存分配、关于虚函数、关于继承中的强制类型转换
开发语言·c++
样例过了就是过了5 小时前
LeetCode热题100 路径总和 III
数据结构·c++·算法·leetcode·链表
OxyTheCrack5 小时前
【C++】简述main函数中的argc与argv
开发语言·c++
历程里程碑5 小时前
Linux 49 HTTP请求与响应实战解析 带http模拟实现源码--万字长文解析
java·开发语言·网络·c++·网络协议·http·排序算法