#include"sqlite3.h"
#include<map>
using namespace std;
#define SQLITE3_USE_MEMORY_DB 1 //使用内存数据库
#define SQLITE3_UNUSE_MEMORY_DB 0
#define SQLITE3_MAX_PARAMETER_IN 100
#define SQLITE3_MAX_PARAMETER_OUT 100
#define SQLITE3_DIRECT_PARAMETER_IN 0
#define SQLITE3_DIRECT_PARAMETER_OUT 1
#define SQLITE3_INTER_BYTE_LENGTH 1
#define SQLITE3_INTER_SHORT_LENGTH 2
#define SQLITE3_INTER_INT_LENGTH 4
#define SQLITE3_SAVE_FILE_TO_MEMORY 0
#define SQLITE3_SAVE_MEMORY_TO_FILE 1
#define SQLITE3_SUCCESS_GET_DATA 1
#define SQLITE3_ERROR_GENERAL_NULL -1
#define SQLITE3_ERROR_MAX_PARAMETER -2
#define SQLITE3_ERROR_UNKNOW_PARAMETER -3
typedef struct tagParamInfo
{
int nParamType;
int nParamLen;
void* pParamAddr;
}tParamInfo;
class CSqlite3
{
public:
CSqlite3();
virtual ~CSqlite3();
int OpenDB(const char* pcFileName, int nMemberFlag = SQLITE3_UNUSE_MEMORY_DB);
int LoadOrSaveDB(const char* pcFileName, int nIsSave = SQLITE3_SAVE_MEMORY_TO_FILE,
const char* pcAliNameSrc = "main", const char* pcAliNameDst = "main");
int AttachDB(const char* pcFileName, const char* pcAliName);
int CloseDB();
int VacumDB();
int Prepare(const char* pcStrSql);
int BindParamNum(int nParamInNum, int nParamOutNum);
int BindParam(int nParamType, int nParamPost, void* pParamAddr, int nParamMaxLen, int ParamDirection);
int FetchData();
int Commit();
int Execute();
int Rollback();
int BeginTranction();
int EndTranction();
private:
int BindParamIn(int nParamType, int nParamPost, void* pParamAddr, int nParamMaxLen);
int BindParamOut(int nParamType, int nParamPost, void* pParamAddr, int nParamMaxLen);
int GetData2Param();
private:
sqlite3* m_pdb;
int m_nParamInMaxCnt;
int m_nParamOutMaxCnt;
map<int, tParamInfo> m_mapParamOut;
sqlite3_stmt* m_pSqliteStmt;
};
sqlite--访问数据库
最新推荐文章于 2024-03-16 19:33:31 发布