好文档 - 专业文书写作范文服务资料分享网站

TUXEDO的客户端编程

天下 分享 时间: 加入收藏 我要投稿 点赞

return end if

//取返回的记录数

ll_row = Foccur32(ll_rcvbuf,CROSSTAB) //如果没有数据返回 if ll_row =0 then

//退出时要注意释放已分配的缓冲区,并调用TPTERM() tpfree( ll_sendbuf ) tpfree( ll_rcvbuf ) tpterm()

messagebox(\提示\没有符合条件的记录\ return end if

//从返回的缓冲区中取记录并把记录插到数据窗口中 string ls_rowdata=\for i = 0 to ll_row -1

if pgets32(ll_rcvbuf, CROSSTAB, i, ls_rowdata) = -1 then //退出时要注意释放已分配的缓冲区,并调用TPTERM() tpfree( ll_sendbuf ) tpfree( ll_rcvbuf ) tpterm() return end if

j=dw_crosstab.insertrow(0)

if dw_crosstab.setitem(j,'rowdata',ls_rowdata) = -1 then messagebox(\ end if next

//退出时要注意释放已分配的缓冲区,并调用TPTERM() tpfree( ll_sendbuf ) tpfree( ll_rcvbuf ) tpterm() return

服务端程序Pbserver.cpp的内容:

#include #include #include #include #include \

EXEC SQL INCLUDE sqlca;

/*RELEASE_CURSOR=YES 使PROC 在执行后释放与嵌入SQL有关资源*/ EXEC ORACLE OPTION (RELEASE_CURSOR = YES);

#define SQLNOTFOUND 1403 /*SELECT没取到数据*/

#define SQLNULL -1405 /*当取出的值是null时,sqlca.sqlcode = -1405*/ #define _DEBUG_ /*调试*/

EXEC SQL BEGIN DECLARE SECTION; /*定义输入参数:*/ long al_empno=0; long al_mgr=0; long al_deptno=0; char ac_ename[11]=\ char ac_job[10]=\

char ac_hiredate[20]=\ double af_sal=0; double af_comm=0; long l_errno=0; long l_return=0;

char c_errtext[256]=\ char c_tmp[256]=\

/*重新定义STRING变量,使其自动加上'\\0',如果是CHAR形的则不能重新定义成STRING变量*/

EXEC SQL VAR ac_ename IS STRING(11); EXEC SQL VAR ac_job IS STRING(10); EXEC SQL VAR ac_hiredate IS STRING(20); EXEC SQL VAR c_tmp IS STRING(256);

EXEC SQL END DECLARE SECTION;

/*出错返回*/

int tux_return(FBFR32 *sendbuf, char *szErrInfo,long sqlcode,char *szErrText) {

FLDLEN32 len=0;

len=sizeof(szErrInfo);

Fchg32(sendbuf, ERRINFO, 0,szErrInfo, len); len = sizeof(sqlcode);

Fchg32( sendbuf, SQLCODE, 0, (char *)&sqlcode, len); len=sizeof(szErrText);

Fchg32(sendbuf, SQLTEXT, 0,szErrText, len);

userlog(\ tpreturn(TPFAIL, 0, (char *)sendbuf, 0L, 0); return 0; }

/*分配返回缓冲区并初始化*/ FBFR32* IniSendBuf(int iSize) {

FBFR32 *sendbuf=NULL; FLDLEN32 len=0;

sendbuf = (FBFR32 *)tpalloc( \ if(sendbuf==(FBFR32 *)NULL) {

userlog(\ return NULL; }

len = Fsizeof32(sendbuf); (void)Finit32(sendbuf,len);

(void)Fchg32(sendbuf, ERRINFO, 0, \ (void)Fchg32(sendbuf, SQLCODE, 0, 0, (FLDLEN32)0); (void)Fchg32(sendbuf, ERRTEXT, 0, \ return sendbuf; }

int tpsvrinit(int argc, char **argv) {

if(tpopen()==-1) {

userlog(\ return -1; }

return 0; }

void tpsvrdone() {

if(tpclose()==-1) {

userlog(\ } } /*

接收客户端传送来的数据,并把数据插入到表EMP中,然后把该表EMP中的记录全部取出,返回给客户端 */

EMP_SEL(TPSVCINFO *rqst) {

FBFR32 *rcvbuf=NULL; FBFR32 *sendbuf=NULL; FLDLEN32 len=0; int i=0;

/*分配返回缓冲区并初始化*/ sendbuf = IniSendBuf(20480); if(sendbuf==NULL) {

tpreturn( TPFAIL, 0, (char *)sendbuf, 0, 0 ); }

/*取出客户端传送过来的数据*/ rcvbuf=(FBFR32 *)rqst->data; len=sizeof(al_empno);

if(Fget32(rcvbuf,EMPNO,0,(char *)&al_empno,&len) == -1) {

tux_return(sendbuf,\ }

len = sizeof(ac_ename); ac_ename[0]='\\0';

if(Fget32(rcvbuf,ENAME,0,ac_ename,&len)== -1) {

tux_return(sendbuf,\}

len=sizeof(ac_job); ac_job[0]='\\0';

if(Fget32(rcvbuf,JOB,0,ac_job,&len)== -1) {

tux_return(sendbuf,\}

len = sizeof(al_mgr);

if(Fget32(rcvbuf,MGR,0,(char*)&al_mgr,&len) == -1) {

tux_return(sendbuf,\}

len=sizeof(ac_hiredate); ac_hiredate[0]='\\0';

if(Fget32(rcvbuf,HIREDATE,0,ac_hiredate,&len) == -1) {

tux_return(sendbuf,\fail\*)Fstrerror32(Ferror32)); }

len=sizeof(af_sal);

if(Fget32(rcvbuf,SAL,0,(char *)&af_sal,&len) == -1) {

tux_return(sendbuf,\}

len=sizeof(af_comm);

if(Fget32(rcvbuf,COMM,0,(char*)&af_comm,&len) == -1) {

tux_return(sendbuf,\fail\*)Fstrerror32(Ferror32)); }

len=sizeof(al_deptno);

if(Fget32(rcvbuf,DEPTNO,0,(char*)&al_deptno,&len) == -1) {

tux_return(sendbuf,\}

/*开始一个全局事务*/

if (tpbegin(30, 0) == -1) {

TUXEDO的客户端编程

returnendif//取返回的记录数ll_row=Foccur32(ll_rcvbuf,CROSSTAB)//如果没有数据返回ifll_row=0then//退出时要注意释放已分配的缓冲区,并调用TPTERM()tpfree(ll_sendbuf)tpfree(ll_rcvbuf)tpterm(
推荐度:
点击下载文档文档为doc格式
3z9e22793w34ka295j7z7yqpo85se700d7i
领取福利

微信扫码领取福利

微信扫码分享