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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serverdb.c

?? TUXEDO中間件重新改造和包裝.在移動BOSS中正式運用.
?? C
?? 第 1 頁 / 共 3 頁
字號:
/***********************************************************************//* 1. tpsvrinit     : 初始化函數                                       *//* 2. SERVERDB      : 服務處理函數                                     */ /* 3. tpsvrdone     : 結束服務                                         */ /***********************************************************************/#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函數號   */static int  nOCIPacketNo;         /* 當前包序號  */static int  nOCIFieldNum;         /* 選擇字段數目*/static int  nOCITranID=0;         /* 事務ID      */static int  nOCIAffectedRow=0;    /* 受操作影響的記錄數 */static int  nOCIRowLimits=0;      /* 查詢操作可提取的最大行數 */static int  nOCIOutNum;           /* 存儲過程輸出參數 */#define  ERROR_PACKET_FORMAT 20001      /* 數據包格式錯誤        */#define  ERROR_UNSOLVED_VARIABLE 20002  /* SQL包含沒有未確定變量 */#define  ERROR_SQL_FORMAT 20003         /* SQL包含初始化賦值錯誤 */#define  DATA_SQL 0        /* SQL位    */#define  DATA_RETCODE 1    /* 結果碼   */#define  DATA_OUTDESC 2    /* Outs描述 */#define  DATA_OUTDATA 3    /* Outs內容 */#define  DATA_FDDESC  4    /* 字段描述 */#define  DATA_ROWS    5    /* 行內容   *//* SQL請求類型 :Insert,Update,Delete,Procedure          */#define  ST_UNKNOWN 'X'    /* 未定類型       */#define  ST_INSERT  'I'    /* 執行Insert     */#define  ST_UPDATE  'U'    /* 執行Update     */#define  ST_DELETE  'D'    /* 執行Delete     */#define  ST_SELECT  'S'    /* 執行Select     */#define  ST_PROCEDURE 'P'  /* 執行存儲過程等 *//* 返回數據類型 */#define DBTYPE_STRING   'S'  /* 字符串 */#define DBTYPE_INT      'I'  /* 整數   */#define DBTYPE_FLOAT    'F'  /* 浮點數 */#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;       數據包長度 */  char PacketLen[4];   /* 數據包長度 */  char UserID[4];      /* 用戶ID     */  char TranID[4];      /* 事務ID     */  char NextFlag;       /* 后續標志   */  /*long RowLimits;       最大行數   */  char RowLimits[4];   /* 最大行數   */  char SQLType;        /* SQL類型    */  char DataPart[6];    /* 數據部分   */} 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);*//******************************************************//* 函數:tpsvrinit                                    *//* 用途:初始化TUXEDO服務                             *//* 原型:int tpsvrinit(int argc, char** argv);        *//* 參數:argc -- 命令行參數個數                       *//*       argv -- 命令行參數清單                       *//* 返回:0 -- 成功; -1 -- 失敗。                     *//* 附注:                                             *//*       這里,我們完成服務器到數據庫的注冊           *//******************************************************/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_  /* 打開事務管理器 */  if(tpopen()==-1)  {    userlog("Cannot my_open XA manager.");    ologof(&lda);    return(-1);  }  #endif  return(0);}/******************************************************//* 函數:tpsvrdone                                    *//* 用途:退出TUXEDO服務                               *//* 原型:void tpsvrdone(void);                        *//* 參數:無                                           *//* 返回:無                                           *//* 附注:                                             *//*       這里,我們從數據庫退出                       *//******************************************************/void tpsvrdone(void){  userlog("Stopping SERVERDB...\n");  #ifdef _USE_TRANS_  /* 關閉事務管理器 */  tpclose();  #endif  /* 關閉數據庫連接 */  if(oclose(&cda))    userlog("Error closing cursor!\n");  if(ologof(&lda))    userlog("Error logging off!\n");}/******************************************************//* 函數:ReConnectSQLServer                           *//* 用途:連接服務器                                   *//* 原型:sword ReConectSQLServer();                   *//* 參數:無                                           *//* 返回: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");  /* 打開數據庫光標用于訪問 */  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中服務請求的結構  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;************************************************************//********************************************************************//* 函數: SERVERDB                                                   *//* 用途: 服務處理                                                   *//* 原型: void SERVERDB(TPSVCINFO* svcinfo);                         *//* 參數: svcinfo -- 服務請求                                        *//* 返回: 無                                                         *//********************************************************************/void SERVERDB(TPSVCINFO* svcinfo){  sword col, errno, n, nvars;  text *cp;  char *pszPacketErr="數據請求包格式錯誤";  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);  /* 檢查服務請求結構是否合法 */  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函數編碼. */  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. 執行SQL語句. */  if(oexec(&cda))  {    oci_error(&cda);    goto FailReturn;  }  /* 6. 對于非查詢操作,直接返回結果. */  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;    /* 預打包字段清單 */  fdlen=PacketFDDesc(fdbuf);  nOCIErrNo=0;  *szOCIErrMsg='\0';  trownum=rownum=0;  *rowbuf='\0';  rowpos=rowbuf+LEN_BYTE_2;  rowlen=LEN_BYTE_2;  for (;;)  {    /* 提取一行內容. */    if(ofetch(&cda))    {      if(cda.rc == NO_DATA_FOUND)      {        if(nOCITranID==0)        {          if(nOCIErrNo==0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡激情三级在线观看| 精品91自产拍在线观看一区| 日韩视频免费观看高清完整版| xf在线a精品一区二区视频网站| 亚洲天堂久久久久久久| 久久精品二区亚洲w码| 色国产综合视频| 中文字幕第一区二区| 麻豆精品蜜桃视频网站| 色综合中文字幕国产| 日韩一区二区精品在线观看| 一区二区三区蜜桃网| 国产sm精品调教视频网站| 日韩欧美国产小视频| 香蕉影视欧美成人| 色94色欧美sute亚洲13| 国产精品久久久久久久久快鸭 | 蜜桃视频一区二区| 99久久精品99国产精品| 国产亚洲欧美日韩俺去了| 人妖欧美一区二区| 欧美日本韩国一区二区三区视频| 亚洲少妇最新在线视频| av影院午夜一区| 国产精品美女久久久久久久久久久 | 麻豆精品视频在线| 欧美一区二区三区在线观看| 亚洲电影视频在线| 欧美日韩亚洲丝袜制服| 亚洲高清久久久| 欧美午夜精品电影| 性久久久久久久久久久久| 欧美日韩一区二区三区四区| 亚洲国产精品久久久男人的天堂 | 欧美日韩国产精选| 亚洲成人免费av| 91精品国产91久久综合桃花| 婷婷久久综合九色综合绿巨人| 欧美性淫爽ww久久久久无| 亚洲一区在线观看免费 | 久久精品99国产精品日本| 91麻豆精品国产91久久久更新时间 | 九九九精品视频| 精品日韩99亚洲| 国产精品一区专区| 国产精品色婷婷| 色94色欧美sute亚洲线路一ni| 亚洲精品日韩综合观看成人91| 在线免费观看日本一区| 亚洲va天堂va国产va久| 日韩美女一区二区三区四区| 九九在线精品视频| 国产精品久久久爽爽爽麻豆色哟哟| 91色乱码一区二区三区| 亚洲福利视频一区二区| 日韩三级.com| 国产91综合网| 亚洲图片欧美综合| 亚洲精品一线二线三线| www.成人网.com| 丝袜美腿亚洲一区| 国产精品天干天干在线综合| 日本乱人伦aⅴ精品| 午夜免费久久看| 欧美精品色一区二区三区| 欧美巨大另类极品videosbest | hitomi一区二区三区精品| 亚洲欧美日韩在线播放| 欧美日韩国产经典色站一区二区三区| 日韩综合小视频| 国产欧美中文在线| 欧美体内she精高潮| 捆绑调教一区二区三区| 国产精品久久久久婷婷| 欧美日韩国产小视频| 韩国毛片一区二区三区| 亚洲人成网站影音先锋播放| 91精品国产品国语在线不卡| 国产久卡久卡久卡久卡视频精品| 亚洲麻豆国产自偷在线| 另类小说视频一区二区| 91美女精品福利| 欧美乱熟臀69xxxxxx| 亚洲午夜精品17c| 国产午夜精品久久久久久久| 91麻豆swag| 国产自产视频一区二区三区| 亚洲精品视频自拍| 欧美va亚洲va在线观看蝴蝶网| 91女人视频在线观看| 国产一区999| 亚洲图片一区二区| 136国产福利精品导航| 日韩一区二区三区av| 色综合久久88色综合天天6| 九色综合国产一区二区三区| 午夜伦欧美伦电影理论片| 亚洲欧美一区二区三区极速播放 | 亚洲图片你懂的| 国产亚洲福利社区一区| 91视频在线观看| 欧美色男人天堂| 99久久久免费精品国产一区二区| 麻豆91在线观看| 婷婷夜色潮精品综合在线| 亚洲视频图片小说| 亚洲欧洲精品天堂一级| 久久免费看少妇高潮| 精品国产凹凸成av人网站| 91麻豆精品国产自产在线观看一区| 欧美三级在线视频| 欧美三级日韩在线| 欧美日韩一区二区三区高清| 色综合一区二区| 欧洲国内综合视频| 欧美系列日韩一区| 欧美日韩免费在线视频| 欧美日韩国产片| 欧美成人aa大片| 久久午夜电影网| 国产欧美日韩综合精品一区二区| 国产日韩精品一区二区三区| 久久蜜臀精品av| 国产精品免费网站在线观看| 国产精品拍天天在线| 中文子幕无线码一区tr| 日本视频一区二区三区| 欧美国产日韩一二三区| 国产精品第五页| 亚洲人妖av一区二区| 亚洲另类中文字| 丝袜国产日韩另类美女| 麻豆精品视频在线| 成人免费视频一区二区| 色婷婷久久综合| 日韩一区二区电影在线| 久久久久久夜精品精品免费| 国产精品美女视频| 亚洲午夜一区二区三区| 久久精品国产精品亚洲红杏| 国产乱码精品一区二区三 | 午夜av一区二区三区| 精品中文字幕一区二区小辣椒| 国产精品69久久久久水密桃 | 美女性感视频久久| 国产白丝网站精品污在线入口| proumb性欧美在线观看| 欧美日本免费一区二区三区| 久久天天做天天爱综合色| 亚洲人精品一区| 日韩经典中文字幕一区| 国产成人av电影在线播放| 欧美日韩中文字幕精品| 久久精品人人做| 亚洲成人在线网站| 国产成人福利片| 欧美日韩一区二区三区免费看| 久久久蜜臀国产一区二区| 亚洲亚洲精品在线观看| 国产成人在线网站| 91麻豆精品国产自产在线观看一区 | www.日韩精品| 欧美一区二区久久| 亚洲天堂av一区| 久久99精品久久久久久久久久久久| 不卡视频一二三| 日韩小视频在线观看专区| 亚洲色欲色欲www在线观看| 极品美女销魂一区二区三区免费 | 91精品国产高清一区二区三区| 国产精品传媒入口麻豆| 极品美女销魂一区二区三区| 欧美性猛交xxxx乱大交退制版| 国产午夜亚洲精品理论片色戒| 亚洲第一在线综合网站| 色一区在线观看| 国产精品日产欧美久久久久| 久久草av在线| 777久久久精品| 亚洲国产精品久久久久秋霞影院| 成人黄色av电影| 国产亚洲福利社区一区| 国产资源在线一区| 欧美成人精品1314www| 亚欧色一区w666天堂| 色婷婷国产精品久久包臀| 中文字幕欧美一区| 福利电影一区二区| 久久精品视频一区二区| 韩国午夜理伦三级不卡影院| 欧美一区二区三区电影| 日韩电影在线一区二区| 欧美美女bb生活片| 亚洲444eee在线观看| 欧美午夜理伦三级在线观看| 亚洲一区二区视频在线观看| 国产精品大尺度| 中文字幕一区二区三区四区不卡| 国产一区在线精品| 国产视频不卡一区|