#include"db_sqlite3.h"
CSqlite3::CSqlite3()
{
m_pdb = NULL;
m_pSqliteStmt = NULL;
m_mapParamOut.clear();
m_nParamInMaxCnt = 0;
m_nParamOutMaxCnt = 0;
}
CSqlite3::~CSqlite3()
{
if (NULL != m_pdb)
{
sqlite3_close(m_pdb);
m_pdb = NULL;
}
}
int CSqlite3::OpenDB(const char* pcFileName, int nMemberFlag)
{
int nRet = SQLITE_OK;
if ((NULL == pcFileName) && (SQLITE3_UNUSE_MEMORY_DB == nMemberFlag))
{
return SQLITE3_ERROR_GENERAL_NULL;
}
if (SQLITE3_UNUSE_MEMORY_DB == nMemberFlag)
{
nRet = sqlite3_open(pcFileName, &m_pdb);
if (SQLITE_OK != nRet)
{
return nRet;
}
}
else
{
nRet = sqlite3_open(":memory;", &m_pdb);
if (SQLITE_OK != nRet)
{
return nRet;
}
if (NULL != pcFileName)
{
nRet = LoadOrSaveDB(pcFileName, SQLITE3_SAVE_FILE_TO_MEMORY);
}
}
return nRet;
}
int CSqlite3::LoadOrSaveDB(const char* pcFileName, int nIsSave, const char* pcAliNameSrc, const char* pcAliNameDst)
{
int nRet = SQLITE_OK;
sqlite3* pFileDB = NULL;
sqlite3_backup* pBackup = NULL;
sqlite3* pToDB = NULL;
sqlite3* pFromDB = NULL;
nRet = sqlite3_open(pcFileName, &pFileDB);
if (nRet == SQLITE_OK)
{
pFromDB = ((nIsSave == SQLITE3_SAVE_FILE_TO_MEMORY) ? pFileDB : m_pdb);
pToDB = ((nIsSave == SQLITE3_SAVE_FILE_TO_MEMORY) ? m_pdb : pFileDB);
pBackup = sqlite3_backup_init(pToDB, pcAliNameDst, pFromDB, pcAliNameSrc);
if (NULL != pBackup)
{
aqlite3_backup_step(pBackup, -1);
sqlite3_backup_finish(pBackup);
}
nRet = sqlite3_errcode(pToDB);
}
else
{
sqlite3_close(pFileDB);
}
return nRet;
}
int CSqlite3::AttachDB(const char* pcFileName, const char* pcAliName)
{
int nRet = SQLITE_OK;
char cSqlite3Sql[256] = {
0 };
if (NULL == m_pdb || NULL == pcFileName || NULL == pcAliName)
{
return SQLITE3_ERROR_GENERAL_NULL;
}
memset(cSqlite3Sql, 0x00, sizeof(cSqlite3Sql));
sprintf_s(cSqlite3Sql, "ATTACH DATABASE '%s' As '%s' ", pcFileName, pcAliName);
nRet = sqlite3_exec(m_pdb, cSqlite3Sql, NULL, NULL, NULL);
if (SQLITE_OK != nRet)
{
sqlite3_close(m_pdb);
return nRet;
CSqlite3--连接数据库
最新推荐文章于 2025-06-26 11:59:58 发布