AMPS:数据库访问模块源码解读 (四)
), AMPS_TRACE_LEVEL_INFO, "Entering.\n");
/*按不同数据库类型进行SQL语句的执行后的资源释放*/
if(AMPS_DB_TYPE_MYSQL == poBDEngineContext->oAMPSDBType)
{
MySQL_FreeResults(r_pvAMPSContext, r_pvBDEngineContext, r_poBDEngineResult);
}
else
if(AMPS_DB_TYPE_ORACLE == poBDEngineContext->oAMPSDBType)
{
Oracle_FreeResults(r_pvAMPSContext, r_pvBDEngineContext, r_poBDEngineResult);
}
//TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_INFO, "Leaving.\n");
}
#include "AMPS_DBEngine.h"
#include "AMPS_MySQL.h"
#include "AMPS_Oracle.h"
/*****************************************************************
函数名称: DBEngine_Init
功能描述: 数据库访问初始化函数
入参::
void* r_pvAMPSContext APMS应用上下文
e_AMPSDBType r_oAMPSDBType 数据库类型(MySQL或Oracle)
char* r_pchHostName 数据库的监听IP
char* r_pchUserName 数据库访问用户名
char* r_pchPassword 数据库访问密码
char* r_pchDataBaseName 数据库名称
出参:
返回值:
void* 数据库访问句柄
*****************************************************************/
void* DBEngine_Init(void* r_pvAMPSContext, e_AMPSDBType r_oAMPSDBType, char* r_pchHostName, char* r_pchUserName, char* r_pchPassword, char* r_pchDataBaseName)
{
t_BDEngineContext* poBDEngineContext = NULL;
//TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_INFO, "Entering.\n");
poBDEngineContext = (t_BDEngineContext*)AMPS_InternalMalloc(sizeof(t_BDEngineContext));
if(NULL == poBDEngineContext)
{
TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_ERROR, "AMPS_InternalMalloc failed for poBDEngineContext.\n");
return NULL;
}
poBDEngineContext->pvAMPSContext = r_pvAMPSContext;
poBDEngineContext->oAMPSDBType = r_oAMPSDBType;
memcpy(poBDEngineContext->pchHostName, r_pchHostName, strlen(r_pchHostName));
//TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_DEBUG, "Host Name is %s.\n", poBDEngineContext->pchHostName);
memcpy(poBDEngineContext->pchUserName, r_pchUserName, strlen(r_pchUserName));
//TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_DEBUG, "User Name is %s.\n", poBDEngineContext->pchUserName);
memcpy(poBDEngineContext->pchPassword, r_pchPassword, strlen(r_pchPassword));
//TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_DEBUG, "Password is %s.\n", poBDEngineContext->pchPassword);
memcpy(poBDEngineContext->pchDataBaseName, r_pchDataBaseName, strlen(r_pchDataBaseName));
//TRACE( DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_DEBUG, "DataBase Name is %s.\n", poBDEngineContext->pchDataBaseName);
/*根据不同的数据库类型,进行访问前的初始化*/
if(AMPS_DB_TYPE_MYSQL == poBDEngineContext->oAMPSDBType)
{
if(AMPS_SUCCESS != MySQL_Init(r_pvAMPSContext, poBDEngineContext))
{
TRACE(DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_ERROR, "MySQL_Init failed.\n");
return NULL;
}
}
else
if(AMPS_DB_TYPE_ORACLE == poBDEngineContext->oAMPSDBType)
{
if(AMPS_SUCCESS != Oracle_Init(r_pvAMPSContext, poBDEngineContext))
{
TRACE(DBE_TRACE_ID(r_pvAMPSContext), AMPS_TRACE_LEVEL_ERROR, "Oracle_Init failed.\n");
return NULL;
}
}
else