swnulldb.c
上传用户:aidanglao
上传日期:2007-01-07
资源大小:69k
文件大小:4k
源码类别:

Oracle数据库

开发平台:

Unix_Linux

  1. /* swnulldb.c - No-DB SQLweb interface
  2. /*
  3. /* Copyright (c) 1995-1999 Applied Information Technologies, Inc.
  4. /* All Rights Reserved.
  5. /*  
  6. /* Distributed uder the GNU General Public License which was included in
  7. /* the file named "LICENSE" in the package that you recieved.
  8. /* If not, write to:
  9. /* The Free Software Foundation, Inc.,
  10. /* 675 Mass Ave, Cambridge, MA 02139, USA.
  11.  */
  12. #include <stdlib.h>
  13. #include <ctype.h>
  14. #include <string.h>
  15. /* #include <malloc.h>
  16.  */
  17. #include "sqlweb.h"
  18. char  *gpIfExpr = ""
  19.     ,*gpNullSelect = ""
  20.     ;
  21. /*
  22. /* Connect to the NODB DATABASE.
  23. /* The pConnect parameter should be passed as (char *)0 to instruct
  24. /*     the DBI to use the ORACLE_CONNECT Symobl.  The pConnect is
  25. /* only used to Override the ORACLE_CONNECT symbol.
  26. /* usage:
  27. /* SQLWEB_LDA lLda;
  28. /* RETeFalse( DbConnect((char*)0     ,&lLda), "Connect Failed");
  29. /* RETeFalse( DbConnect("scott/tiger",&lLda), "Connect Failed");
  30.  */
  31. eBoolean_t
  32. DbConnect(char *pConnect /* Database Specific Connect String */
  33.  ,SQLWEB_LDA *pLDA /* This Function must Fills-in
  34. /* the SQLWEB_LDA structure
  35.  */
  36.  )
  37. {
  38.     return(eTrue);
  39. }
  40. /*
  41. /* Disconnect from the DATABASE.
  42. /* bCommit Flag:  bCommit=eTrue  means essentially "COMMIT RELEASE"
  43. /*   bCommit=eFalse means essentially "ROLLBACK RELEASE"
  44. /* usage:
  45. /* SQLWEB_LDA lLda;
  46. /* ... connect ...
  47. /* RETeFalse( DbDisonnect(&lLda,eTrue), "Connect Failed"); -- Commit
  48. /* RETeFalse( DbDisonnect(&lLda,eFalse),"Connect Failed"); -- Rollback
  49.  */
  50. eBoolean_t
  51. DbDisconnect(SQLWEB_LDA *pLDA /* LDA struct from DbConnect() */
  52.     ,eBoolean_t bCommit /* Commit/Rollback Flag */
  53.     )
  54. {
  55.     /* Perform the COMMIT/ROLLBACK
  56.      */
  57.     if(ISeTrue(bCommit)) (void)DbCommit(pLDA);
  58.     else  (void)DbRollback(pLDA);
  59.     return(eTrue);
  60. }
  61. /*
  62. /* Commit an NODB Transaction
  63.  */
  64. eBoolean_t
  65. DbCommit(SQLWEB_LDA *pLDA)
  66. {
  67.     return(eTrue);
  68. }
  69. /*
  70. /* Rollback a Transaction.
  71.  */
  72. eBoolean_t
  73. DbRollback(SQLWEB_LDA *pLDA)
  74. {
  75.     return(eTrue);
  76. }
  77. /*
  78. /* Open a CURSOR. Must deal with SELECT and non-SELECT statements.
  79. /* All BIND variables are taken from the SYMBOL TABLE
  80. /* All SELECT-LIST variables are installed into the SYMBOL TABLE
  81. /* usage:
  82. /* SQLWEB_LDA lLda;
  83. /* SQLWEB_CURSOR cCur;
  84. /* char *pSQL = "select ename from emp where ename like :SYM_NAME";
  85. /* ... connect ...
  86. /* RETeFalse( DbOpenCursor(&lLda,pSQL,&cCur), "Open Failed");
  87.  */
  88. eBoolean_t
  89. DbOpenCursor(SQLWEB_LDA *pLDA /* SQLWEB LDA struct created by DbConnect() */
  90.     ,char *pStmt /* SQL Statement, All BIND Variables will
  91. /* be extracted from the SYMBOL TABLE and
  92. /* The SELECT LIST must be INSTALLED into
  93. /* The SYMBOL TABLE
  94.  */
  95.     ,SQLWEB_CURSOR *pCursor
  96. /* This Function must Populate
  97. /* The SQLWEB_CURSOR structure
  98.  */
  99.     )
  100. {
  101.     pCursor->bOpen = eFalse;
  102.     return(eTrue);
  103. }
  104. /*
  105. /* Fetch a ROW from the CURSOR and install each SELECT ITEM into
  106. /* The SYMBOL TABLE.
  107. /* bClose Flag:   bClose=eTrue  means CLOSE CURSOR after the FETCH
  108. /*   bClose=eFalse means CLOSE CURSOR when exhausted
  109. /*
  110. /* ******* SPECIAL NOTE ABOUT RETURN CODE: *******
  111. /* ONLY return(eFalse) on DATABASE ERROR
  112. /* USE pCursor->bFound=eFalse; to indicate NOT FOUND
  113. /* ******* SPECIAL NOTE ABOUT RETURN CODE: *******
  114. /* usage:
  115. /* SQLWEB_CURSOR cCur;
  116. /* ... connect ...
  117. /* ... open    ...
  118. /* for(;;) {
  119. /*     RETeFalse( DbFetchCursor(&cCur,eFalse), "Close Failed");
  120. /*     if(cCur.bFound) break;
  121. /* }
  122.  */
  123. eBoolean_t
  124. DbFetchCursor(SQLWEB_CURSOR *pCursor /* the CURSOR (from Open) */
  125.      ,eBoolean_t bClose /* Force Close after Fetch */
  126.      )
  127. {
  128.     pCursor->bOpen = eFalse;
  129.     pCursor->bFound = eFalse;
  130.     return(eTrue);
  131. }