D5000商用数据库程序员手册.docx_第1页
D5000商用数据库程序员手册.docx_第2页
D5000商用数据库程序员手册.docx_第3页
D5000商用数据库程序员手册.docx_第4页
D5000商用数据库程序员手册.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 历史数据访问服务1.1 客户端数据库调用接口Dci类1.1.1 连接数据库接口ConnectInt Connect(const char* server, const char* user_name, const char* pasword, ErrorInfo_t* error)1.1.1.1 参数描述表 1-1接口参数输入输出参数(返回值)说明备注serverIN数据库服务名。类似oracle中的tnsnames中描述的数据服务名。user_nameIN用户名。paswordIN用户密码。errorOUT带有错误信息的结构。返回值OUT正确返回True,错误返回False。1.1.1.2 处理过程及返回值说明在需要和数据库交互时首先需要调用该接口进行连接工作,数据库客户端将用户名、密码等相关信息传递给服务器,连接数据库成功后该类将获得环境句柄evnhp,服务句柄svchp,错误句柄errhp,认证句柄authp。其中evnhp、svchp、authp为全局变量。并可以利用该类的其他接口进行和数据库的交互工作。正确返回True,错误返回False。错误结构中包括发生错误的文件名,发生错误的文件的行,数据库的返回的错误号,数据库返回的错误描述。1.1.1.3 调用方法class CDci g_CDci;Error_Info error;Int Retcode;Retcode = g_CDci.Connect(HIS , hisdb, hisdb,error); 1.1.2 数据库断开连接DisConnectDisConnect(ErrorInfo_t* error)1.1.2.1 参数描述表 1-2接口参数输入输出参数(返回值)说明备注errorOUT错误信息返回值OUT1:正确断开和数据库的连接情况。0:因各种原因没有正确结束。1.1.2.2 处理过程及返回值说明在程序和数据库交互工作完成以后,需要通知数据库释放为该客户端链接所开的资源,调应该接口可以完成上述工作。1.1.2.3 调用方法class CDci g_CDci;Int retcode;Retcode = g_CDci.DisConnect(error);1.1.3 从商用库读取数据1.1.3.1 参数描述int CDci:ReadData (IN const char *query, OUT int *rec_num, OUT int *attr_num,OUT struct ColAttr * attrs,OUT char *buf,ErrorInfo_t* error)int CDci:ReadData (IN const char *query,IN int top_number, OUT int *rec_num, OUT int *attr_num,OUT struct ColAttr * attrs,OUT char *buf,ErrorInfo_t* error)表 1-3接口参数输入/输出参数(返回值)说明备注queryInSql字符串执行命令top_numberIn取数据集的前top_number行如果为-1,则将符合条件的所有结果集缺省全部输出。rec_numout返回应用的处于活动状态的机器名attr_numOut返回应用的处于活动状态的机器号attrsOut数据集各个属性的描述。bufOut数据集的首指针errorOut错误结构返回值Out1:成功;0:失败1.1.3.2 处理过程及返回值说明通过该接口,数据库会根据query从数据库读取数据并返回相关数据,rec_num为返回的数据行数,attr_num为返回的属性的个数,attrs为返回的列属性数组的头指针,buf为按照先行后列规则排列的数据集合,error为接口返回错误结构,接口成功后error为空,接口失败后需要读取error的内容定位数据库错误。和FreeReadData搭对应用,以便对内存进行释放。1.1.3.3 调用方法class CDci g_CDci;Int retcode;Retcode = g_CDci.Connect(HIS,hisdb,hisdb,error);Int rec_num,attr_num;Char *attrs,*buf;Retcode = g_CDci.ReadData(select * from aaa,&rec_num, &attr_num,&attrs ,&buf,error)If(Retcode !=True)Printf(“ the error no is %d and the error descr is %s “,error.error_no,error.error_info);Retcode = g_CDci.ReadData(select * from aaa, 1000,&rec_num, &attr_num,&attrs ,&buf,error)If(Retcode !=True)Printf(“ the error no is %d and the error descr is %s “,error.error_no,error.error_info);1.1.4 释放数据集列属性描述结构指针,通常和ReadData接口联合使用1.1.4.1 参数描述void CDci:FreeColAttrData(ColAttr_t *col_attr, int cols)表 1-4接口参数输入/输出参数(返回值)说明备注col_attrIn列属性头指针的描述colsIn列个数返回值Out1:成功;0:失败1.1.4.2 处理过程及返回值说明在使用ReadData接口取数成功后,输入ReadData接口所开的列属性的头指针和列的个数,该接口会依次释放掉数据集合列属性集中所消耗内存,确保没有内存泄漏。和GetColAttr接口搭对。1.1.4.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);Retcode = g_CDci.ReadData(select * from aaa,&rec_num, &attr_num,&attrs ,&buf,error)If(Retcode !=True)Printf(“ the error no is %d and the error descr is %s “,error.error_no,error.error_info);Retcode = g_CDci. FreeColAttrData(attrs, attr_num,&error1);1.1.5 释放数据集指针,通常和ReadData接口联合使用1.1.5.1 参数描述void CDci:FreeReadData(ColAttr_t *col_attr, int colnum,char *databuf)表 1-5接口参数输入/输出参数(返回值)说明备注col_attrIn列属性头指针的描述colnumIn列个数databufIn数据集指针返回值Out1:成功;0:失败1.1.5.2 处理过程及返回值说明在使用ReadData接口取数成功后,输入ReadData接口所开的列属性的头指针和列的个数,输入返回的数据集的头指针,该接口会依次释放掉数据集合列属性集中所消耗内存,释放掉数据集所耗的内存,确保没有内存泄漏。1.1.5.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);Retcode = g_CDci.ReadData(select * from aaa,&rec_num, &attr_num,&attrs ,&buf,error)If(Retcode !=True)Printf(“ the error no is %d and the error descr is %s “,error.error_no,error.error_info);Retcode = g_CDci. FreeReadData(attrs, attr_num,&error1);1.1.6 执行sql语句1.1.6.1 参数描述bool CDci:ExecSingle(IN const char *sqlstr,ErrorInfo_t* error)表 1-6接口参数输入/输出参数(返回值)说明备注sqlstrOut可执行的sql语句errorIn返回错误结构返回值Out1:成功;0:失败1.1.6.2 处理过程及返回值说明Sqlstr为可执行的sql语句,返回true为执行成功,返回false为执行失败。1.1.6.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);retcode = g_CDci.ExecSingle(update aaa set a1=5 where b1=6,&error1);1.1.7 插入或更新数据至数据库1.1.7.1 参数描述bool CDci:WriteData(IN const char *query, IN const char *buf, IN const int rec_num, IN const int attr_num, IN const struct ColAttr* attrs,ErrorInfo_t* error)表 1-7接口参数输入/输出参数(返回值)说明备注queryOut可执行的sql语句bufIn返回错误结构rec_numOut记录行数attr_numOut列属性的行数attrsOut列属性结构指针errorOut错误结构指针返回值Out1:成功;0:失败1.1.7.2 处理过程及返回值说明数据库通过解析query,将buf为头指针的数据集合按照行和列属性的描述进行数据的回写。1返回成功,0返回失败。1.1.7.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);const strut ColAttr* attrs = (ColAttr* )malloc(sizeof(colattr_t)*2);/有两列数据 attrs0.data_type = DCI_INT;attrs0.data_size = 4;attrs1.data_type = DCI_INT;attrs1.data_size =4;char qurey1000;memset(query,0,1000);strcpy(query,update aaa set a1 = 3 where b1=5);retcode = g_CDci.WriteData (query,buf, 2, 2, attrs,&error1);if(retcode !=0) Printf(“ the error code is %d and the descr is %s “,error.error_no,error.error.error_info);1.1.8 得到某条曲线的数据1.1.8.1 参数描述int CDci:GetCurveData(CurvePara ¶m, CurveData *datapp, int &items, ErrorInfo &error)表 1-8接口参数输入/输出参数(返回值)说明备注paraOut曲线参数信息结构包括:char conf_id采样表定义的配置号;Time_t:starttime:要求取得的启示时间;Time_t:stoptime:要求取得的采样终点时间;char dev_key_id_values:keyid描述。Int needpace:步长Int data_format:要求得到数据的类型,是平均值还是最大、最小值等。Char resvererd32:保留字节。 datappIn返回错误结构itemsOut曲线返回点个数errorOut错误结构返回值Out1:成功;0:失败1.1.8.2 处理过程及返回值说明通过解析param结构,获得曲线信息,包括曲线数据类型(最大值,最小值,第一个值,最后一个值,平均值)、数据时间间隔、曲线号(根据曲线号得到数据库表结构、数据集合和取数条件),将获得的数据存入CurveData类型的datapp指针指向的数据结构中,成功返回1,失败返回0。1.1.8.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);if(retcode !=0) Printf(“ the error code is %d and the descr is %s “,error.error_no,error.error.error_info);1.1.9 得到某个表格的数据1.1.9.1 参数描述int CDci:GetSheetData(CurvePara ¶m, vector &attr, vector &data, vector &colname, const char* where_str, ErrorInfo &error)表 1-9接口参数输入/输出参数(返回值)说明备注paramIn表格(曲线)参数信息同GetCurveData接口描述。结构包括:char conf_id采样表定义的配置号;Time_t:starttime:要求取得的启示时间;Time_t:stoptime:要求取得的采样终点时间;char dev_key_id_values:keyid描述。Int needpace:步长Int data_format:要求得到数据的类型,是平均值还是最大、最小值等。Char resvererd32:保留字节。attrIn读取列信息的容器dataOut返回表格数据colnameIn返回表格字符串where_strIn读取表格数据的过滤条件errorOut返回值Out1:成功;0:失败1.1.9.2 处理过程及返回值说明通过解析param结构,获得表格信息,包括表格数据时间间隔、表格号(根据表格号得到数据库表结构、数据集合和取数条件),将获得的数据存入ColDataItem类型的data指针指向的数据结构中,成功返回1,失败返回0。1.1.9.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);if(retcode !=0) Printf(“ the error code is %d and the descr is %s “,error.error_no,error.error.error_info);g_CDci.GetSheetData(CurvePara ¶m, vector &attr, vector &data, vector &colname, const char* where_str, const char* order_by, ErrorInfo &error);1.1.10 从曲线上修改数据1.1.10.1 参数描述int CDci:SetCurveData(CurvePara ¶m, CurveData *curvedatap, ub2 items, ErrorInfo &error)表 1-10接口参数输入/输出参数(返回值)说明备注paramIn曲线参数信息同GetCurveData接口描述curvedatapOut读取列信息的容器itemsOut返回表格数据errorOut返回表格字符串返回值Out1:成功;0:失败1.1.10.2 处理过程及返回值说明通过解析param结构,获得表格信息,包括表格数据时间间隔、表格号(根据表格号得到数据库表结构、数据集合和取数条件),将曲线修改的数据放入到CurveData结构类型的指针中,包括要求修改的数据、质量位、一一对应的时间等信息,并最终将数据回写回数据库中。1.1.10.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);if(retcode !=0) Printf(“ the error code is %d and the descr is %s “,error.error_no,error.error.error_info);g_CDci.SetSheetData(CurvePara ¶m, vector &attr, vector &data, vector &colname, const char* where_str, const char* order_by, ErrorInfo &error);recode = g_CDci.DisConnect(His,hisdb,hisdb,error);1.1.11 从画面表格中修改数据1.1.11.1 参数描述int CDci:SetSheetData(char *model_name, vector &rec, ErrorInfo &error)表 1-11接口参数输入/输出参数(返回值)说明备注model_nameIn和数据结构相关的表格配置号,字符串类型。recOut回写记录数据errorOut出错信息返回值Out1:成功;0:失败1.1.11.2 处理过程及返回值说明通过解析model_name字符串名字,获得表格信息,包括表格数据时间间隔、表格号(根据表格号得到数据库表结构、数据集合和取数条件),将表格修改的数据放入到SheetRecData结构类型的容器中,并最终将数据回写回数据库中。1.1.11.3 调用方法class CDci g_CDci;int retcode;Error_info error1;recode = g_CDci.Connect(His,hisdb,hisdb,error);if(retcode !=0) Printf(“ the error code is %d and the descr is %s “,error.error_no,error.error.error_info);g_CDci.SetSheetData(CurvePara ¶m, vector &attr, vector &data, vector &colname, const char* where_str, const char* order_by, ErrorInfo &error);recode = g_CDci.DisConnect(His,hisdb,hisdb,error);1.2 商用数据库服务接口HisServiceClientInterface类1.2.1 初始化客户端通信管道1.2.1.1 参数描述int HisServiceClientInterface:InitSocket(ServiceInfo &service)表 1-12接口参数输入/输出参数(返回值)说明备注serviceIn/OutServiceInfo结构,包括服务ip、端口号、底层服务分配句柄handle等信息。返回值Out1:成功;0:失败1.2.1.2 处理过程及返回值说明如果调用HisServiceClientInterface类需要向服务总线注册通信管道和端口信息。1.2.1.3 调用方法HisServiceClientInterface hsci1;ServiceInfo serviceinfo;serviceinfo.port = 20009;hsci1.InitSocket(ServiceInfo &serviceinfo);1.2.2 从服务中得到数据1.2.2.1 参数描述Int HisServiceClientInterface:GetHisFromBaseUsingSingleSql(const char *cmd_buff,time_t timeout,HisInfo_struct hisinforp, char * databuff, ColAttr_t *colattrpp , int *colnum ,int *recnum,ErrorInfo *error)表 1-13接口参数输入/输出参数(返回值)说明备注cmd_buffIn/OutServiceInfo结构,包括服务ip、端口号、底层服务分配句柄handle等信息。timeoutIn设置的该接口返回的超时的时间。hisinforpIn端口号和返回句柄等信息。databuffOut返回结果集头指针colattrpOut返回结果集各列信息指针colnumOut返回结果集构成列数recnumOut返回结果集构成行数errorOut出错信息返回值Out1:成功;0:失败1.2.2.2 处理过程及返回值说明如果调用HisServiceClientInterface类需要向服务总线注册通信管道和端口信息。1.2.2.3 调用方法#include hisclient.h#include #include stdio.h#include /分析结果char * MyParseResultsForReadData(int recnum,int attr_num,ColAttr_t* attrs, char* buf)char *pResult;pResult=new char *recnum;for(int i=0;i recnum; i+)pResulti= new char*attr_num;int iOffset = 0;for(int i = 0 ; i recnum ; i +)for (int j=0; jattr_num; j+)pResultij = new charattrsj.data_size;memcpy(pResultij, buf+iOffset, attrsj.data_size);iOffset += attrsj.data_size;return pResult;/释放分析结果void ReleaseMyResultBuf(int recnum,int attr_num, char *pResult)for(int i = 0 ; i recnum ; i +)for (int j=0; j1298622547,10,hisinfo,&buf,&attrs,&attr_num,&recnum,&error1);printf(retcode = %dn,retcode);if(retcode 0)cout the error no is error1.error_no and the error descr is error1.error_info endl;char *data = NULL;int i;data = MyParseResultsForReadData(recnum, attr_num,attrs,buf);if(data)for(i = 0 ; i recnum ; i +)int occur_time_sec,occur_time_us;char szComment210;memcpy( &occur_time_sec,datai0,sizeof(occur_time_sec);memcpy( &occur_time_us,datai1,sizeof(occur_time_us);memset(szComment,0,sizeof(szComment);memcpy( szComment,datai2,100);printf(%d.%03d : %sn, occur_time_sec, occur_time_us/1000,szComment);ReleaseMyResultBuf(recnum,attr_num,data);return 0;1.2.3 通过服务执行商用数据库命令,同步接口1.2.3.1 参数描述Int HisServiceClientInterface:ExecHisBaseUseSingleSql(const char *cmd_buff,time_t timeout, HisInfo_struct hisinforp,ErrorInfo *error)表 1-14接口参数输入/输出参数(返回值)说明备注cmd_buffIn/OutServiceInfo结构,包括服务ip、端口号、底层服务分配句柄handle等信息。timeoutIn因是同步,这是接口设置的返回的超时时间。hisinfopIn/端口号和返回句柄等信息。返回值Out1:成功;0:失败1.2.3.2 处理过程及返回值说明接口将cmd_buff中的命令读取后传入商用数据库中间层的程序,递交到数据库服务器后等待返回值,中间层将返回信息传递到数据库服务器中。1.2.3.3 调用方法HisServiceClientInterface hsci1;ServiceInfo serviceinfo;serviceinfo.port = 20009;hsci1.InitSocket(ServiceInfo &serviceinfo);char cmd_buff1000;memset(cmd_buff,0,1000);char *databuff;char *colattrppint colnum,recnum;ErrorInfo error1;strcpy(cmd_buff, “update aaa set a1=123 where b1=50”);int retcode;retcode = hsci1. ExecHisFromBaseUsingSingleSql(cmd_buff,20, hisinforp, &colnum ,&recnum,&error1);1.2.4 调用曲线1.2.4.1 参数描述int HisServiceClientInterface:GetCurveData(CurvePara ¶m, time_t timeout, CurveData * datap, int &items, ErrorInfo &error)表 1-15接口参数输入/输出参数(返回值)说明备注ParamIn/Out曲线端口信息结构。timeoutIn因是同步,这是接口设置的返回的超时时间。datapIn返回数据的指针items曲线应返回数据的个数返回值Out1:成功;0:失败1.2.4.2 处理过程及返回值说明根据param参数结构得到曲线数据。成功返回1,失败返回0。1.2.4.3 调用方法HisServiceClientInterface hsci1;ServiceInfo serviceinfo;serviceinfo.port = 20009;hsci1.InitSocket(ServiceInfo &serviceinfo);char cmd_buff1000;memset(cmd_buff,0,1000);char *databuff;char *colattrppint colnum,recnum;ErrorInfo error1;strcpy(cmd_buff, “select * from aaa0”);int retcode,items;retcode = hsci1. GetCurveData(CurvePara ¶m, 20, CurveData * databuff, &items, ErrorInfo &error)1.2.5 异步执行sql语句1.2.5.1 参数描述ExecuteSqlAsyncEx(HisInfo &

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论