SQLiteHelper
方便进行数据库的操作
SQLiteHelper.h
#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
#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);
}