CSqlite3--连接数据库

本文详细介绍了如何使用CSqlite3库连接和操作SQLite3数据库,包括建立连接、执行SQL语句、处理结果集等核心步骤,是SQLite3数据库开发的基础教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#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;
 	
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2020年冬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值