亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? serverdb.c

?? TUXEDO中間件重新改造和包裝.在移動BOSS中正式運用.
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***********************************************************************//* 1. tpsvrinit     : 初始化函數(shù)                                       *//* 2. SERVERDB      : 服務(wù)處理函數(shù)                                     */ /* 3. tpsvrdone     : 結(jié)束服務(wù)                                         */ /***********************************************************************/#include <stdio.h>#include <ctype.h>#include <string.h>#include <unistd.h>#include <sys/time.h>#ifdef _AIX#include <sys/access.h>#endif/* Include OCI-specific headers. */#include <oratypes.h>#include <ocidfn.h>#ifdef __STDC__#include <ociapr.h>#else#include <ocikpr.h>#endif#include <ocidem.h>/* 用于BEA TUXEDO的包含文件 */#include <atmi.h>#define _DEBUG/* Constants used in this program. */#define MAX_BINDS               100#define MAX_ITEM_BUFFER_SIZE    100#define MAX_SELECT_LIST_SIZE    100#define MAX_SQL_IDENTIFIER      100#define MAX_OUT_LIST_SIZE       100#define PARSE_NO_DEFER           0#define PARSE_V7_LNG             2/* Define one logon data area and one cursor data area   Also define a host data area for olog.   (See ocidfn.h for declarations). */Lda_Def lda;Cda_Def cda;ub4     hda[HDA_SIZE/(sizeof(ub4))];void myuserlog(char *hdr, char *str);void DoCommit(Lda_Def *lda);void DoRollback(Lda_Def *lda);/* Declare structures for query information. */struct describe{    sb4             dbsize;    sb2             dbtype;    sb1             buf[MAX_ITEM_BUFFER_SIZE];    sb4             buflen;    sb4             dsize;    sb2             precision;    sb2             scale;    sb2             nullok;};struct define {    ub1             buf[MAX_ITEM_BUFFER_SIZE];    float           flt_buf;    sword           int_buf;    sb2             indp;    ub2             col_retlen, col_retcode;};struct outinfo{    ub2             ovrld;   /* returns overloading info */    ub2             pos;     /* returns the parameter position in the list */    ub2             level;   /* returns the level for composite parameters */    text            argnm[MAX_ITEM_BUFFER_SIZE];   /* returns parameter names */    ub2             arnlen;  /* returns lengths of names */    ub2             dtype;   /* returns ORACLE datatype code */    ub1             defsup;  /* returns "default supplied" indicators */    ub1             mode;    /* returns the mode(IN OUT/IN/OUT) info  */    ub4             dtsize;  /* returns lengths */    ub2             prec;    /* returns precision, if a number */    ub2             scale;   /* returns scale, if a number */    ub1             radix;   /* returns the radix, if a number */    ub4             spare;   /* reserved must be passed */};/* Define arrays of describe and define structs. */struct describe desc[MAX_SELECT_LIST_SIZE];struct define   def[MAX_SELECT_LIST_SIZE];struct outinfo  outs[MAX_OUT_LIST_SIZE];struct define   outv[MAX_OUT_LIST_SIZE];text szOutNames[MAX_OUT_LIST_SIZE][MAX_SQL_IDENTIFIER];/* Declare an array of bind values. */text szOutValues[MAX_OUT_LIST_SIZE][MAX_ITEM_BUFFER_SIZE];sb2 sbNullFlag[MAX_OUT_LIST_SIZE];/*  Declare this programs functions. */int   tpsvrinit(int argc, char** argv);void  SERVERDB(TPSVCINFO* svcinfo);void  tpsvrdone(void);sword ReConnectSQLServer();sword ConnectSQLServer(text* szUserName,text* szPassword, text* szServerName);sword describe_define();sword do_prevbinds();sword do_postbinds();void  oci_error();char ConvertDBType(sb2 dbtype);/* Globals */static sword numwidth = 8;static char *pszRcPath=NULL;static char *pszUserNameID="USERNAME";static char *pszPasswordID="PASSWORD";static char *pszServerNameID="SERVER";static text szOCISQL[16192];       /* OCI請求SQL  */static sb2  nOCIErrNo;            /* OCI錯誤碼   */static text szOCIErrMsg[512];     /* OCI錯誤信息 */static sword nOCIFunction;        /* OCI函數(shù)號   */static int  nOCIPacketNo;         /* 當(dāng)前包序號  */static int  nOCIFieldNum;         /* 選擇字段數(shù)目*/static int  nOCITranID=0;         /* 事務(wù)ID      */static int  nOCIAffectedRow=0;    /* 受操作影響的記錄數(shù) */static int  nOCIRowLimits=0;      /* 查詢操作可提取的最大行數(shù) */static int  nOCIOutNum;           /* 存儲過程輸出參數(shù) */#define  ERROR_PACKET_FORMAT 20001      /* 數(shù)據(jù)包格式錯誤        */#define  ERROR_UNSOLVED_VARIABLE 20002  /* SQL包含沒有未確定變量 */#define  ERROR_SQL_FORMAT 20003         /* SQL包含初始化賦值錯誤 */#define  DATA_SQL 0        /* SQL位    */#define  DATA_RETCODE 1    /* 結(jié)果碼   */#define  DATA_OUTDESC 2    /* Outs描述 */#define  DATA_OUTDATA 3    /* Outs內(nèi)容 */#define  DATA_FDDESC  4    /* 字段描述 */#define  DATA_ROWS    5    /* 行內(nèi)容   *//* SQL請求類型 :Insert,Update,Delete,Procedure          */#define  ST_UNKNOWN 'X'    /* 未定類型       */#define  ST_INSERT  'I'    /* 執(zhí)行Insert     */#define  ST_UPDATE  'U'    /* 執(zhí)行Update     */#define  ST_DELETE  'D'    /* 執(zhí)行Delete     */#define  ST_SELECT  'S'    /* 執(zhí)行Select     */#define  ST_PROCEDURE 'P'  /* 執(zhí)行存儲過程等 *//* 返回數(shù)據(jù)類型 */#define DBTYPE_STRING   'S'  /* 字符串 */#define DBTYPE_INT      'I'  /* 整數(shù)   */#define DBTYPE_FLOAT    'F'  /* 浮點數(shù) */#define DBTYPE_DATE     'D'  /* 日期   */ #define DBTYPE_UNKNOWN  'U'  /* 未確定 */#define LEN_BYTE_4 4#define LEN_BYTE_2 2#define LEN_BYTE_1 1typedef struct tagPacketQR {  char PacketID[4];    /* 通信頭     */  /*int  PacketLen;       數(shù)據(jù)包長度 */  char PacketLen[4];   /* 數(shù)據(jù)包長度 */  char UserID[4];      /* 用戶ID     */  char TranID[4];      /* 事務(wù)ID     */  char NextFlag;       /* 后續(xù)標志   */  /*long RowLimits;       最大行數(shù)   */  char RowLimits[4];   /* 最大行數(shù)   */  char SQLType;        /* SQL類型    */  char DataPart[6];    /* 數(shù)據(jù)部分   */} PacketQR;typedef struct tagPartDesc{  /*int PartLen;          該部分長度 */  char PartLen[2];     /* 該部分長度 */  /*int PartShift;        該部分位置 */  char PartShift[2];   /* 該部分位置 */} PartDesc;#define MAX_SENDBUF_LEN   8192#define PACKET_MIN_LEN    sizeof(PacketQR)+6*sizeof(PartDesc)int  UnpacketSQL(char* data, long len,char *szSQL);void DebugPrint(char* buf, long len);void DebugPrintHeader(PacketQR* hdr);int  striequal(char* s1, char* s2);/*int  isspace(char s);*/void TrimRight(char* p);void SetStrByte4(char* pbyte, int n);int  GetStrByte4(char* pbyte);void SetStrByte2(char* pbyte, int n);int  GetStrByte2(char* pbyte);/*void SetStrByte1(char* pbyte, int n);int GetStrByte1(char* pbyte);*//******************************************************//* 函數(shù):tpsvrinit                                    *//* 用途:初始化TUXEDO服務(wù)                             *//* 原型:int tpsvrinit(int argc, char** argv);        *//* 參數(shù):argc -- 命令行參數(shù)個數(shù)                       *//*       argv -- 命令行參數(shù)清單                       *//* 返回:0 -- 成功; -1 -- 失敗。                     *//* 附注:                                             *//*       這里,我們完成服務(wù)器到數(shù)據(jù)庫的注冊           *//******************************************************/int tpsvrinit(int argc, char** argv){  extern int optind;  extern char *optarg;  userlog("Starting SERVERDB...\n");  /* 配置文件名稱由命令行-P(p)給定 */  if(getopt(argc,argv,"Pp")!=EOF)  {    pszRcPath=argv[optind];  }  if(pszRcPath==NULL)  {    userlog("Please configure the self-configuration file for serverdb\n");    return(-1);  }  if(access(pszRcPath,R_OK)==-1)  {    userlog("Please check self-configuration file %s to assure it has existed and can be accessed\n",pszRcPath);    return(-1);  }  /* 從配置文件中讀取用戶名和密碼 */  if(ReConnectSQLServer())  {    userlog("Cannot connect to databse SQL server\n");    return(-1);  }  #ifdef _USE_TRANS_  /* 打開事務(wù)管理器 */  if(tpopen()==-1)  {    userlog("Cannot my_open XA manager.");    ologof(&lda);    return(-1);  }  #endif  return(0);}/******************************************************//* 函數(shù):tpsvrdone                                    *//* 用途:退出TUXEDO服務(wù)                               *//* 原型:void tpsvrdone(void);                        *//* 參數(shù):無                                           *//* 返回:無                                           *//* 附注:                                             *//*       這里,我們從數(shù)據(jù)庫退出                       *//******************************************************/void tpsvrdone(void){  userlog("Stopping SERVERDB...\n");  #ifdef _USE_TRANS_  /* 關(guān)閉事務(wù)管理器 */  tpclose();  #endif  /* 關(guān)閉數(shù)據(jù)庫連接 */  if(oclose(&cda))    userlog("Error closing cursor!\n");  if(ologof(&lda))    userlog("Error logging off!\n");}/******************************************************//* 函數(shù):ReConnectSQLServer                           *//* 用途:連接服務(wù)器                                   *//* 原型:sword ReConectSQLServer();                   *//* 參數(shù):無                                           *//* 返回:integer. 0 -- 成功; -1 -- 非致命錯誤         *//*                -2 -- 致命錯誤.                     *//* 附注:                                             *//******************************************************/sword ReConnectSQLServer(){  text szUserName[40],szPassword[20],szServerName[40];    userlog("Connect to Oracle SQL Server...\n");  if((LoadEntryRcItem(pszUserNameID,szUserName)!=0)     ||(LoadEntryRcItem(pszPasswordID,szPassword)!=0)     ||(LoadEntryRcItem(pszServerNameID,szServerName)!=0))  {    userlog("Bad contents in self_configuration file %s\n",pszRcPath);    return(-2);  }  /* 從配置文件中讀取用戶名和密碼 */  if(ConnectSQLServer(szUserName,szPassword,szServerName)==-1)  {    userlog("Cannot connect to databse SQL server\n");    return(-1);  }  userlog("Connect to database SQL server ok\n");  /* 打開數(shù)據(jù)庫光標用于訪問 */  if(oopen(&cda, &lda, (text *) 0, -1, -1, (text *) 0, -1))  {    userlog("Error opening cursor.  Exiting...\n");    ologof(&lda);    return(-2);  }  return(0);}/**********************************************************  BEA TUXEDO中服務(wù)請求的結(jié)構(gòu)  struct tpsvcinfo {    char name[ 32]; // service name invoked     long flags; // describes service attributes    char *data; // pointer to data    long len; // request data length    int cd; // connection descriptor    long appkey; // application authentication key    CLIENTID cltid;// client identifier  };  typedef struct struct tpsvcinfo TPSVCINFO;************************************************************//********************************************************************//* 函數(shù): SERVERDB                                                   *//* 用途: 服務(wù)處理                                                   *//* 原型: void SERVERDB(TPSVCINFO* svcinfo);                         *//* 參數(shù): svcinfo -- 服務(wù)請求                                        *//* 返回: 無                                                         *//********************************************************************/void SERVERDB(TPSVCINFO* svcinfo){  sword col, errno, n, nvars;  text *cp;  char *pszPacketErr="數(shù)據(jù)請求包格式錯誤";  char fdbuf[4096];  char rowbuf[MAX_SENDBUF_LEN];  char linebuf[MAX_SENDBUF_LEN];  char sendbuf[MAX_SENDBUF_LEN];  text szOCISQL2[16192];       /* OCI請求SQL  */  int  fdlen=0,rowlen=0,vallen=0,sendlen=0;  char *tpbuf;  char *rowpos;  int  rownum=0,trownum=0;  long revent;  int  fdvallen;  time_t tmStart;  int  retcode;RestartSQLProcess:  nOCIFunction=0;  nOCIAffectedRow=0;    DebugPrint((char*)svcinfo->data,svcinfo->len);  /* 檢查服務(wù)請求結(jié)構(gòu)是否合法 */  if(UnpacketSQL(svcinfo->data,svcinfo->len,(char*)szOCISQL)==-1)  {    nOCIErrNo=ERROR_PACKET_FORMAT;    strcpy((char*)szOCIErrMsg,pszPacketErr);    goto FailReturn;  }    /* 處理SQL請求 */  /* 1. 分析SQL語句:1.1 判定是否存儲過程;1.2 判定是否 */  if(do_prevbinds(szOCISQL)==-1)  {    goto FailReturn;  }  if(oparse(&cda, (text *) szOCISQL, (sb4) -1,(sword) PARSE_NO_DEFER, (ub4) PARSE_V7_LNG))  {    if(strncasecmp((char*)szOCISQL,"begin\n",strlen("begin\n")))    {      sprintf((char*)szOCISQL2,"begin\n%s;end;\n",szOCISQL);      if(oparse(&cda, (text *) szOCISQL2, (sb4) -1,(sword) PARSE_NO_DEFER, (ub4) PARSE_V7_LNG))      {        oci_error(&cda);        goto FailReturn;      }    }    else    {      oci_error(&cda);      goto FailReturn;    }  }  /* 2. 保存SQL函數(shù)編碼. */  nOCIFunction = cda.ft;  /* 3. 綁定輸入變量(這里不能有輸入變量). */  if(do_postbinds(&cda)==-1) /* !=0) */  {    goto FailReturn;  }  /* 4. 對于查詢, 描述和定義選擇項目 */  if(nOCIFunction==FT_SELECT)  {    if ((nOCIFieldNum = describe_define(&cda)) == -1)    {       goto FailReturn;    }  }    /* 5. 執(zhí)行SQL語句. */  if(oexec(&cda))  {    oci_error(&cda);    goto FailReturn;  }  /* 6. 對于非查詢操作,直接返回結(jié)果. */  if(nOCIFunction!=FT_SELECT)  {    nOCIAffectedRow=cda.rpc;    if(nOCIFunction==FT_UPDATE||nOCIFunction==FT_DELETE       ||nOCIFunction==FT_INSERT)      sprintf((char*)szOCIErrMsg,"成功處理了%d行記錄.",cda.rpc);    else      strcpy((char*)szOCIErrMsg,"處理成功.");    nOCIErrNo=0;    goto FailReturn;  }  /*else */  /* 6. 提取查詢記錄. */  nOCIPacketNo=0;    /* 預(yù)打包字段清單 */  fdlen=PacketFDDesc(fdbuf);  nOCIErrNo=0;  *szOCIErrMsg='\0';  trownum=rownum=0;  *rowbuf='\0';  rowpos=rowbuf+LEN_BYTE_2;  rowlen=LEN_BYTE_2;  for (;;)  {    /* 提取一行內(nèi)容. */    if(ofetch(&cda))    {      if(cda.rc == NO_DATA_FOUND)      {        if(nOCITranID==0)        {          if(nOCIErrNo==0)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人在线视频观看| 91精品国产入口在线| 国产呦精品一区二区三区网站| 亚洲第一狼人社区| 一区二区三区小说| 亚洲资源在线观看| 亚洲成在线观看| 亚洲图片有声小说| 免费成人在线播放| 精品亚洲成a人在线观看| 国产一区在线观看麻豆| 国产精品羞羞答答xxdd| 国产高清精品在线| 99在线视频精品| 99精品久久99久久久久| 色狠狠综合天天综合综合| 欧美日韩aaaaa| 欧美一区二区久久| 欧美激情资源网| 亚洲最大成人网4388xx| 日韩中文字幕麻豆| 国产精选一区二区三区| 91久久一区二区| 欧美日韩国产乱码电影| 精品欧美乱码久久久久久| 久久久久久久久久久久久久久99 | av在线综合网| 欧美综合一区二区三区| 欧美一区二区在线播放| 亚洲国产精品传媒在线观看| 亚洲综合一区在线| 国内精品免费在线观看| 91社区在线播放| 日韩精品一区二区三区视频 | 亚洲欧美国产77777| 日本视频一区二区三区| 国产精品91一区二区| 日本黄色一区二区| 久久久久久99久久久精品网站| 亚洲色图在线看| 麻豆精品在线视频| 欧美性一区二区| 欧美激情在线看| 日本视频一区二区| 99re在线视频这里只有精品| 欧美r级电影在线观看| 亚洲资源在线观看| 国产真实乱对白精彩久久| 91久久国产最好的精华液| 国产亚洲婷婷免费| 免费观看91视频大全| 欧美视频精品在线| 亚洲欧洲日本在线| 国产成人综合网站| 久久综合狠狠综合久久激情 | 亚洲国产精品久久人人爱蜜臀 | 99re亚洲国产精品| 日韩欧美美女一区二区三区| 亚洲精品久久久久久国产精华液| 亚洲在线观看免费| 成人丝袜高跟foot| 精品国产一区a| 免费一区二区视频| 欧美三级中文字| 亚洲欧美日韩国产成人精品影院| 久久99国产精品久久99果冻传媒| 欧美乱熟臀69xxxxxx| 亚洲精品一二三四区| 97精品久久久午夜一区二区三区 | 成年人国产精品| 久久久一区二区三区| 精品一区二区三区蜜桃| 3d动漫精品啪啪1区2区免费| 亚洲午夜免费福利视频| 日韩女优av电影在线观看| 日本不卡一区二区三区高清视频| 91福利小视频| 亚洲成a天堂v人片| 欧美另类一区二区三区| 日韩和欧美的一区| 日韩欧美电影在线| 美女网站一区二区| 精品成人一区二区三区| 国产麻豆午夜三级精品| 久久久久久久综合日本| 国产成人自拍高清视频在线免费播放| 欧美电影免费观看高清完整版在线| 美女高潮久久久| 精品福利一二区| 国产成a人亚洲精| 国产精品视频一二三| 99久久伊人精品| 亚洲国产一区二区视频| 欧美一区二区在线播放| 国产精一区二区三区| 国产精品天美传媒| 91麻豆免费看| 日韩中文字幕91| 久久亚洲精品国产精品紫薇| 成人深夜在线观看| 亚洲男人都懂的| 宅男噜噜噜66一区二区66| 国产精一区二区三区| 亚洲日本在线看| 7777精品伊人久久久大香线蕉的| 美女视频一区在线观看| 国产精品久久久一本精品| 色成年激情久久综合| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久久久九九视频| 色美美综合视频| 国产毛片一区二区| 亚洲成人免费观看| 久久综合视频网| 欧美日本一区二区三区| 国产成人亚洲精品狼色在线| 亚洲一区在线观看视频| 久久久久久久久久久久久夜| 91成人在线观看喷潮| 国产中文一区二区三区| 亚洲精品伦理在线| 久久综合色播五月| 欧美日韩午夜在线视频| 成人免费毛片aaaaa**| 日日夜夜免费精品视频| 亚洲欧洲制服丝袜| 精品sm捆绑视频| 欧美人xxxx| 懂色av一区二区夜夜嗨| 精品一区二区三区日韩| 亚洲欧美日韩中文字幕一区二区三区| 欧美电影免费观看高清完整版在| 91麻豆免费观看| 懂色av中文字幕一区二区三区| 日韩av电影天堂| 亚洲成人免费视频| 一个色综合网站| 亚洲乱码国产乱码精品精可以看 | 波波电影院一区二区三区| 日日摸夜夜添夜夜添精品视频| 综合精品久久久| 久久久91精品国产一区二区精品 | 91免费观看在线| 国产精品1区2区| 国产福利一区在线| 激情五月婷婷综合网| 日韩高清欧美激情| 天堂在线一区二区| 午夜精品久久久久久| 一区二区三区丝袜| 日韩欧美成人午夜| 色天天综合久久久久综合片| 国产成人啪午夜精品网站男同| 日韩国产高清影视| 男人的j进女人的j一区| 日韩制服丝袜av| 免费成人性网站| 国产一区二区三区在线观看免费| 日韩精品电影一区亚洲| 日韩和的一区二区| 麻豆一区二区在线| 国产美女在线精品| jizzjizzjizz欧美| 色综合天天综合在线视频| 91麻豆产精品久久久久久| 一本久久综合亚洲鲁鲁五月天| 91视频一区二区三区| 欧美最新大片在线看 | 国产精品自拍三区| 国产精品一区三区| av在线不卡观看免费观看| 91在线精品一区二区三区| 色哟哟亚洲精品| 欧美色综合影院| 欧美本精品男人aⅴ天堂| 69久久夜色精品国产69蝌蚪网| 欧美视频在线一区二区三区 | 99久久久免费精品国产一区二区 | 欧美日韩精品一区二区| 欧美日韩精品欧美日韩精品一| 欧美午夜不卡视频| 日韩你懂的在线播放| 欧美国产精品一区| 亚洲影视在线观看| 91麻豆精品国产91久久久| 亚洲一区二区三区自拍| 欧美二区在线观看| 亚洲一区在线看| 久久久久久久久久久黄色| 国产视频一区在线观看| 国产精品国产自产拍高清av| 午夜欧美电影在线观看| 99久久99久久综合| 91 com成人网| 日本一区二区三区电影| 亚洲一区二区三区视频在线| 激情久久五月天| 日本乱码高清不卡字幕| 日韩欧美一二三区| 亚洲另类中文字|