AMPS:数据库访问模块源码解读 (一)

2014-11-24 08:23:41 · 作者: · 浏览: 0
AMPS做为一个中间件,也提供了访问 数据库的接口,目前支持MySQL和 Oracle(对我所喜爱PostgreSQL却默认不支持,看来我的爱好属于非主流哈~),下面要看的是DBEngine库,它只做一件事情,就是封装了不同数据库操作的差异,提供一个数据库统一访问接口。下节再看针对不同数据库的具体操作。
AMPS_DBEngine.h
#ifndef __HEADER_AMPS_DB_ENGINE_H
#define __HEADER_AMPS_DB_ENGINE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "AMPS_Defines.h"
#include "AMPS_LinkList.h"
#include "AMPS_MemMgt.h"
#include "AMPS_EventSystem.h"
#include "AMPS_Core.h"
#include "AMPS_API.h"
typedef struct _BDEngineContext t_BDEngineContext;
struct _BDEngineContext
{
void* poDBHandle;
void* pvAMPSContext; //pointer to framework context
e_AMPSDBType oAMPSDBType;
char pchHostName[AMPS_MAX_IP_STRING_LENGTH];
char pchUserName[AMPS_SIZE_OF_DB_USER_NAME];
char pchPassword[AMPS_SIZE_OF_DB_PWD];
char pchDataBaseName[AMPS_SIZE_OF_DB_NAME];
unsigned int unDBPort;
char pchUnixSocket[AMPS_SIZE_OF_DB_UNIX_SOCKET];
unsigned long ulClientFlag;
};
void* DBEngine_Init(void* r_pvAMPSContext, e_AMPSDBType r_oAMPSDBType, char* r_pchHostName, char* r_pchUserName, char* r_pchPassword, char* r_pchDataBaseName);
void DBEngine_Cleanup(void* r_pvAMPSContext, void* r_pvBDEngineContext);
int DBEngine_Query(void* r_pvAMPSContext, void* r_pvBDEngineContext, const char* r_pcchQueryStatement, unsigned long r_ulLengthOfQuery, t_AMPSDBEngineResult* r_poAMPSDBEngineResult);
void DBEngine_FreeResults(void* r_pvAMPSContext, void* r_pvBDEngineContext, t_AMPSDBEngineResult* r_poAMPSDBEngineResult);
#ifdef __cplusplus
}
#endif
#endif //__HEADER_AMPS_DB_ENGINE_H
#ifndef __HEADER_AMPS_DB_ENGINE_H
#define __HEADER_AMPS_DB_ENGINE_H
#ifdef __cplusplus
extern "C" {
#endif
#include "AMPS_Defines.h"
#include "AMPS_LinkList.h"
#include "AMPS_MemMgt.h"
#include "AMPS_EventSystem.h"
#include "AMPS_Core.h"
#include "AMPS_API.h"
typedef struct _BDEngineContext t_BDEngineContext;
struct _BDEngineContext
{
void* poDBHandle;
void* pvAMPSContext; //pointer to framework context
e_AMPSDBType oAMPSDBType;
char pchHostName[AMPS_MAX_IP_STRING_LENGTH];
char pchUserName[AMPS_SIZE_OF_DB_USER_NAME];
char pchPassword[AMPS_SIZE_OF_DB_PWD];
char pchDataBaseName[AMPS_SIZE_OF_DB_NAME];
unsigned int unDBPort;
char pchUnixSocket[AMPS_SIZE_OF_DB_UNIX_SOCKET];
unsigned long ulClientFlag;
};
void* DBEngine_Init(void* r_pvAMPSContext, e_AMPSDBType r_oAMPSDBType, char* r_pchHostName, char* r_pchUserName, char* r_pchPassword, char* r_pchDataBaseName);
void DBEngine_Cleanup(void* r_pvAMPSContext, void* r_pvBDEngineContext);
int DBEngine_Query(void* r_pvAMPSContext, void* r_pvBDEngineContext, const char* r_pcchQueryStatement, unsigned long r_ulLengthOfQuery, t_AMPSDBEngineResult* r_poAMPSDBEngineResult);
void DBEngine_FreeResults(void* r_pvAMPSContext, void* r_pvBDEngineContext, t_AMPSDBEngineResult* r_poAMPSDBEngineResult);
#ifdef __cpl