主要数据库访问接口函数如下
连接和断开数据库:
bool Open(const *i_pszSrv ,const *i_pszUser ,const *i_pszPwd);
bool Open(const *i_pszSrv,const *i_pszIpAddr,const *i_pszDBName,const *i_pszUser,const *i_pszPwd,const *dbType);
void Close(bool bClose=true);
判断数据库是否打开:
bool IsOpen( )const{return m_bOpen;}
获取数据库类型:
int GetDBType( )const{return m_nDBType;}
获取数据源名字:const *GetDBName( )const{return m_qsSrcName.GetBuf( );}
执行SQL语句:
bool ExecuteSQL(const *i_pszSqlStr);
int Exec( );
判断数据表是否存在
bool IsTableExist(const *i_szTableName);
获取错误号和错误字符串:
int GetErrorNo( );
const *GetErrorStr( );
准备SQL语句:
bool PrepareSQL(const *i_pStringSQL);
关闭本次SQL处理:
void CloseSQL( );
绑定列:
bool BindCol(int i_nColType,int i_nColSize,void*i_pColAddr);
绑定参数:
bool BindPara(int i_nParaType,int i_nParaSize,void*i_pParaAddr);
获取查询结果:
bool Fetch( );
是否到了记录尾:
bool IsEnd( );
开始事务操作:
bool BeginTrans( );
递交事务:
bool Commit( );
回滚事务:
bool Rollback( );
第二步:在数据库通用访问类CQSDBI中定义各个数据库类型通用的通用插件函数。然后在对外开放的public成员函数中分别调用上述通用插件函数,即,每一种数据库类型对应实现一个动态链接库,在库中实现各自的通用插件函数。 在CQSDBI的Open函数中,根据传入的数据库类型,加载这些动态链接库,把上述通用插件函数匹配到每一种独立数据库类型的接口函数。
这些通用插件函数定义如下:
void*(*qs_open)(const * ,const * ,const * ,const * ,const*);
void(*qs_close)(const void* ,bool);
bool(*qs_execute_sql)(const void* ,const *);
bool(*qs_is_table_exist)(const void* ,const *);
int(*qs_get_error_no)(const void*);
const *(*qs_get_error_str)(const void*);
bool(*qs_prepare_sql)(const void* ,const *);
void(*qs_close_sql)(const void*);
bool(*qs_bind_col)(const void* ,int,int,void*);
bool(*qs_bind_para)(const void* ,int,int,void*);
int(*qs_exec)(const void*);
bool(*qs_fetch)(const void*);
bool(*qs_is_end)(const void*);
bool(*qs_begin_trans)(const void*);
bool(*qs_commit)(const void*);
bool(*qs_rollback)(const void*);
第三步:确定并实现Oracle数据库插件类CQSOracleDBI。根据Oracle数据库自带的Oracle调用接口函数(Oracle Call Interface简称OCI)的要求,实现类似上述CQSDBI的通用插件函数与插件函数的匹配。
第三步:确定并实现SQL Server数据库插件类CQSSqlserver。本发明选用ODBC的技术要求,实现类似上述CQSDBI的通用插件函数与插件函数的匹配。
第四步:确定并实现My SQL插件类CQSMysqlDBI。根据My SQL数据库提供的API访问接口,实现类似上述CQSDBI的通用插件函数与插件函数的匹配。
第五步:确定并实现My SQL插件类CQSSybaseDBI。根据Sybase数据库提供的API访问接口,实现类似上述CQSDBI的通用插件函数与插件函数的匹配。
第六步:确定并实现文件方式插件类CQSFi leDB。选用csv文件格式存储数据,根据文本文件的一般读写方式结合QT库,实现类似上述CQSDBI的通用 插件函数与插件函数的匹配。
本发明实现了上述数据库类型的统一操作,针对其他数据库类型,可以做类似的扩展予以支持,实现了微电网监控系统访问数据库时,可以不必关心具体的操作系统平台与数据库类型,只需简单调用通用数据库访问类的各个数据库访问接口函数即可完成。具体针对每一种数据库的接口实现,由底层插件完成。这样大大降低了上层软件编程的复杂度,具有很好的通用性和稳定性。另外,本发明还支持有效扩展,对暂未包含在插件中的数据库类型,可以根据通用数据库访问类接口的要求逐一实现,具备良好的扩展性
以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。