localDbPrepare.c
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:25k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. /***************************************************************
  14. * I N C L U D E D   F I L E S                                  *
  15. ***************************************************************/
  16. #include <ndb_global.h>
  17. #include "userInterface.h"
  18. #include "userHandle.h"
  19. /***************************************************************
  20. * L O C A L   C O N S T A N T S                                *
  21. ***************************************************************/
  22. /***************************************************************
  23. * L O C A L   D A T A   S T R U C T U R E S                    *
  24. ***************************************************************/
  25. /***************************************************************
  26. * L O C A L   F U N C T I O N S                                *
  27. ***************************************************************/
  28. /***************************************************************
  29. * L O C A L   D A T A                                          *
  30. ***************************************************************/
  31. /*----------------*/
  32. /* Transaction T1 */
  33. /*----------------*/
  34. static char *update_subscriber_stmnt = "update subscriber set 
  35. location = ?,changedBy = ?, changedTime = ? where subscriberNumber = ?";
  36. /*----------------*/
  37. /* Transaction T2 */
  38. /*----------------*/
  39. static char *read_subscriber_stmnt = "select subscriberName,location,
  40. changedBy,changedTime from subscriber where subscriberNumber = ? for update";
  41. /*----------------*/
  42. /* Transaction T3 */
  43. /*----------------*/
  44. static char *read_subscriber_session_stmnt = "select activeSessions,groupId,
  45. changedBy,changedTime from subscriber where subscriberNumber = ? for update";
  46. static char *read_group_allowRead_stmnt   = "select allowRead from userGroup 
  47. where groupId = ?";
  48. static char *read_group_allowInsert_stmnt = "select allowInsert from userGroup 
  49. where groupId = ?";
  50. static char *read_group_allowDelete_stmnt = "select allowDelete from userGroup 
  51. where groupId = ?";
  52. static char *read_session_details_stmnt = "select sessionData from userSession 
  53. where subscriberNumber = ? and serverId = ? for update";
  54. static char *update_noOfRead_stmnt = "update server 
  55. set noOfRead = noOfRead + 1 where serverId = ? and subscriberSuffix = ?";
  56. static char *update_noOfInsert_stmnt = "update server 
  57. set noOfInsert = noOfInsert + 1 where serverId = ? and subscriberSuffix = ?";
  58. static char *update_noOfDelete_stmnt = "update server 
  59. set noOfDelete = noOfDelete + 1 where serverId = ? and subscriberSuffix = ?";
  60. static char *insert_session_stmnt = "insert into userSession values (?,?,?)";
  61. static char *delete_session_stmnt = "delete from userSession 
  62. where subscriberNumber = ? and serverId = ?";
  63. static char *update_subscriber_session_stmnt = "update subscriber set 
  64. activeSessions = ? where subscriberNumber = ?";
  65. /***************************************************************
  66. * P U B L I C   D A T A                                        *
  67. ***************************************************************/
  68. /***************************************************************
  69. ****************************************************************
  70. * L O C A L   F U N C T I O N S   C O D E   S E C T I O N      *
  71. ****************************************************************
  72. ***************************************************************/
  73. extern void handle_error(SQLHDBC  hdbc,
  74.                          SQLHENV  henv, 
  75.                          SQLHSTMT hstmt, 
  76.                          SQLRETURN rc,
  77.                          char *filename,
  78.                          int lineno);
  79. /***************************************************************
  80. ****************************************************************
  81. * P U B L I C   F U N C T I O N S   C O D E   S E C T I O N    *
  82. ****************************************************************
  83. ***************************************************************/
  84. int localDbPrepare(UserHandle *uh)
  85. {
  86.    SQLRETURN rc;
  87.    if(!uh) return(-1);
  88.    /*-----------------------------*/
  89.    /* Update Subscriber Statement */
  90.    /*-----------------------------*/
  91.    rc = SQLAllocStmt(uh->hdbc, &uh->updateSubscriber.stmt);
  92.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  93.       printf("Unable to allocate insert group statementn");
  94.       return(-1);
  95.    }
  96.    rc = SQLPrepare(uh->updateSubscriber.stmt,(SQLCHAR *) update_subscriber_stmnt, SQL_NTS);
  97.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  98. /*
  99. handle_error(uh->hdbc, uh->henv, uh->updateSubscriber.stmt, rc, __FILE__, __LINE__);
  100. */
  101.       printf("Unable to prepare update subscriber statementn");
  102.       return(-1);
  103.    }
  104.    rc = SQLBindParameter(uh->updateSubscriber.stmt,
  105.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  106.                          0,0,
  107.                          &uh->updateSubscriber.values.location,0,NULL);
  108.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  109.       printf("Unable to prepare update subscriber statement param 1n");
  110.       return(-1);
  111.    }
  112.    rc = SQLBindParameter(uh->updateSubscriber.stmt,
  113.                          2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  114.                          CHANGED_BY_LENGTH+1,0,
  115.                          uh->updateSubscriber.values.changedBy,0,NULL);
  116.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  117.       printf("Unable to prepare update subscriber statement param 2n");
  118.       return(-1);
  119.    }
  120.    rc = SQLBindParameter(uh->updateSubscriber.stmt,
  121.                          3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  122.                          CHANGED_TIME_LENGTH+1,0,
  123.                          uh->updateSubscriber.values.changedTime,0,NULL);
  124.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  125.       printf("Unable to prepare update subscriber statement param 3n");
  126.       return(-1);
  127.    }
  128.    rc = SQLBindParameter(uh->updateSubscriber.stmt,
  129.                          4,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  130.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  131.                          uh->updateSubscriber.values.number,0,NULL);
  132.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  133.       printf("Unable to prepare update subscriber statement param 3n");
  134.       return(-1);
  135.    }
  136.    /*---------------------------*/
  137.    /* Read Subscriber Statement */
  138.    /*---------------------------*/
  139.    rc = SQLAllocStmt(uh->hdbc, &uh->readSubscriber.stmt);
  140.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  141.       printf("Unable to allocate read subscriber statementn");
  142.       return(-1);
  143.    }
  144.    rc = SQLPrepare(uh->readSubscriber.stmt,(SQLCHAR *) read_subscriber_stmnt, SQL_NTS);
  145.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  146.       printf("Unable to prepare read subscriber statementn");
  147.       return(-1);
  148.    }
  149.    rc = SQLBindParameter(uh->readSubscriber.stmt,
  150.                          1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  151.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  152.                          uh->readSubscriber.values.number,0,NULL);
  153.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  154.       printf("Unable to prepare read subscriber statement param 1n");
  155.       return(-1);
  156.    }
  157.    rc = SQLBindCol(uh->readSubscriber.stmt, 1, 
  158.                    SQL_C_CHAR,
  159.                    uh->readSubscriber.values.name, SUBSCRIBER_NAME_LENGTH+1,
  160.                    NULL);
  161.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  162.       printf("Unable to bind column 1 to read subscriber statementn");
  163.       return(-1);
  164.    }
  165.    rc = SQLBindCol(uh->readSubscriber.stmt, 2, 
  166.                    SQL_C_DEFAULT,
  167.                    &uh->readSubscriber.values.location, 1,
  168.                    NULL);
  169.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  170.       printf("Unable to bind column 2 to read subscriber statementn");
  171.       return(-1);
  172.    }
  173.    rc = SQLBindCol(uh->readSubscriber.stmt, 3, 
  174.                    SQL_C_CHAR,
  175.                    uh->readSubscriber.values.changedBy, CHANGED_BY_LENGTH+1,
  176.                    NULL);
  177.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  178.       printf("Unable to bind column 3 to read subscriber statementn");
  179.       return(-1);
  180.    }
  181.    rc = SQLBindCol(uh->readSubscriber.stmt, 4, 
  182.                    SQL_C_CHAR,
  183.                    uh->readSubscriber.values.changedTime, CHANGED_TIME_LENGTH+1,
  184.                    NULL);
  185.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  186.       printf("Unable to bind column 4 to read subscriber statementn");
  187.       return(-1);
  188.    }
  189.    /*------------------------------------*/
  190.    /* Read Subscriber Sessions Statement */
  191.    /*------------------------------------*/
  192.    rc = SQLAllocStmt(uh->hdbc, &uh->readSubscriberSession.stmt);
  193.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  194.       printf("Unable to allocate read subscriber session statementn");
  195.       return(-1);
  196.    }
  197.    rc = SQLPrepare(uh->readSubscriberSession.stmt,(SQLCHAR *) read_subscriber_session_stmnt, SQL_NTS);
  198.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  199.       printf("Unable to prepare read subscriber sessions statementn");
  200.       return(-1);
  201.    }
  202.    rc = SQLBindParameter(uh->readSubscriberSession.stmt,
  203.                          1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  204.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  205.                          uh->readSubscriberSession.values.number,0,NULL);
  206.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  207.       printf("Unable to prepare read subscriber statement param 1n");
  208.       return(-1);
  209.    }
  210.    rc = SQLBindCol(uh->readSubscriberSession.stmt, 1, 
  211.                    SQL_C_DEFAULT,
  212.                    &uh->readSubscriberSession.values.activeSessions, 0,
  213.                    NULL);
  214.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  215.       printf("Unable to bind column 1 to read subscriber sessions statementn");
  216.       return(-1);
  217.    }
  218.    rc = SQLBindCol(uh->readSubscriberSession.stmt, 2, 
  219.                    SQL_C_DEFAULT,
  220.                    &uh->readSubscriberSession.values.groupId, 0,
  221.                    NULL);
  222.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  223.       printf("Unable to bind column 2 to read subscriber sessions statementn");
  224.       return(-1);
  225.    }
  226.    rc = SQLBindCol(uh->readSubscriberSession.stmt, 3, 
  227.                    SQL_C_CHAR,
  228.                    uh->readSubscriberSession.values.changedBy, CHANGED_BY_LENGTH+1,
  229.                    NULL);
  230.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  231.       printf("Unable to bind column 3 to read subscriber sessions statementn");
  232.       return(-1);
  233.    }
  234.    rc = SQLBindCol(uh->readSubscriberSession.stmt, 4, 
  235.                    SQL_C_CHAR,
  236.                    uh->readSubscriberSession.values.changedTime, CHANGED_TIME_LENGTH+1,
  237.                    NULL);
  238.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  239.       printf("Unable to bind column 4 to read subscriber sessions statementn");
  240.       return(-1);
  241.    }
  242.    /*--------------------------------*/
  243.    /* Read Group AllowRead Statement */
  244.    /*--------------------------------*/
  245.    rc = SQLAllocStmt(uh->hdbc, &uh->readGroupAllowRead.stmt);
  246.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  247.       printf("Unable to allocate read subscriber session statementn");
  248.       return(-1);
  249.    }
  250.    rc = SQLPrepare(uh->readGroupAllowRead.stmt,(SQLCHAR *) read_group_allowRead_stmnt, SQL_NTS);
  251.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  252.       printf("Unable to prepare read group allow read statementn");
  253.       return(-1);
  254.    }
  255.    rc = SQLBindParameter(uh->readGroupAllowRead.stmt,
  256.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  257.                          0,0,
  258.                          &uh->readGroupAllowRead.values.groupId,0,NULL);
  259.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  260.       printf("Unable to prepare read allow read statement param 1n");
  261.       return(-1);
  262.    }
  263.    rc = SQLBindCol(uh->readGroupAllowRead.stmt, 1, 
  264.                    SQL_C_DEFAULT,
  265.                    &uh->readGroupAllowRead.values.allowRead, 0,
  266.                    NULL);
  267.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  268.       printf("Unable to bind column 1 to read group allow read statementn");
  269.       return(-1);
  270.    }
  271.    /*----------------------------------*/
  272.    /* Read Group AllowInsert Statement */
  273.    /*----------------------------------*/
  274.    rc = SQLAllocStmt(uh->hdbc, &uh->readGroupAllowInsert.stmt);
  275.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  276.       printf("Unable to allocate read subscriber session statementn");
  277.       return(-1);
  278.    }
  279.    rc = SQLPrepare(uh->readGroupAllowInsert.stmt,(SQLCHAR *) read_group_allowInsert_stmnt, SQL_NTS);
  280.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  281.       printf("Unable to prepare read group allow read statementn");
  282.       return(-1);
  283.    }
  284.    rc = SQLBindParameter(uh->readGroupAllowInsert.stmt,
  285.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  286.                          0,0,
  287.                          &uh->readGroupAllowInsert.values.groupId,0,NULL);
  288.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  289.       printf("Unable to prepare read allow read statement param 1n");
  290.       return(-1);
  291.    }
  292.    rc = SQLBindCol(uh->readGroupAllowInsert.stmt, 1, 
  293.                    SQL_C_DEFAULT,
  294.                    &uh->readGroupAllowInsert.values.allowInsert, 0,
  295.                    NULL);
  296.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  297.       printf("Unable to bind column 1 to read group allow read statementn");
  298.       return(-1);
  299.    }
  300.    /*----------------------------------*/
  301.    /* Read Group AllowDelete Statement */
  302.    /*----------------------------------*/
  303.    rc = SQLAllocStmt(uh->hdbc, &uh->readGroupAllowDelete.stmt);
  304.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  305.       printf("Unable to allocate read subscriber session statementn");
  306.       return(-1);
  307.    }
  308.    rc = SQLPrepare(uh->readGroupAllowDelete.stmt,(SQLCHAR *) read_group_allowDelete_stmnt, SQL_NTS);
  309.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  310.       printf("Unable to prepare read group allow read statementn");
  311.       return(-1);
  312.    }
  313.    rc = SQLBindParameter(uh->readGroupAllowDelete.stmt,
  314.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  315.                          0,0,
  316.                          &uh->readGroupAllowDelete.values.groupId,0,NULL);
  317.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  318.       printf("Unable to prepare read allow read statement param 1n");
  319.       return(-1);
  320.    }
  321.    rc = SQLBindCol(uh->readGroupAllowDelete.stmt, 1, 
  322.                    SQL_C_DEFAULT,
  323.                    &uh->readGroupAllowDelete.values.allowDelete, 0,
  324.                    NULL);
  325.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  326.       printf("Unable to bind column 1 to read group allow read statementn");
  327.       return(-1);
  328.    }
  329.    /*----------------------*/
  330.    /* read session details */
  331.    /*----------------------*/
  332.    rc = SQLAllocStmt(uh->hdbc, &uh->readSessionDetails.stmt);
  333.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  334.       printf("Unable to allocate read session details statementn");
  335.       return(-1);
  336.    }
  337.    rc = SQLPrepare(uh->readSessionDetails.stmt,(SQLCHAR *) read_session_details_stmnt, SQL_NTS);
  338.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  339.       printf("Unable to prepare read session details statementn");
  340.       return(-1);
  341.    }
  342.    rc = SQLBindParameter(uh->readSessionDetails.stmt,
  343.                          1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  344.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  345.                          uh->readSessionDetails.values.number,0,NULL);
  346.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  347.       printf("Unable to prepare read sessions param 1n");
  348.       return(-1);
  349.    }
  350.    rc = SQLBindParameter(uh->readSessionDetails.stmt,
  351.                          2,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  352.                          0,0,
  353.                          &uh->readSessionDetails.values.serverId,0,NULL);
  354.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  355.       printf("Unable to prepare read sessions param 2n");
  356.       return(-1);
  357.    }
  358.    rc = SQLBindCol(uh->readSessionDetails.stmt, 1, 
  359.                    SQL_C_CHAR,
  360.                    uh->readSessionDetails.values.details, SESSION_DETAILS_LENGTH+1,
  361.                    NULL);
  362.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  363.       printf("Unable to bind column 1 to read group allow read statementn");
  364.       return(-1);
  365.    }
  366.    /*-------------------*/
  367.    /* Update no of Read */
  368.    /*-------------------*/
  369.    rc = SQLAllocStmt(uh->hdbc, &uh->updateServerNoOfRead.stmt);
  370.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  371.       printf("Unable to allocate update noOfRead statementn");
  372.       return(-1);
  373.    }
  374.    rc = SQLPrepare(uh->updateServerNoOfRead.stmt,(SQLCHAR *) update_noOfRead_stmnt, SQL_NTS);
  375.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  376.       printf("Unable to prepare update noOfRead statementn");
  377.       return(-1);
  378.    }
  379.    rc = SQLBindParameter(uh->updateServerNoOfRead.stmt,
  380.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  381.                          0,0,
  382.                          &uh->updateServerNoOfRead.values.serverId,0,NULL);
  383.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  384.       printf("Unable to prepare read noOfRead param 1n");
  385.       return(-1);
  386.    }
  387.    rc = SQLBindParameter(uh->updateServerNoOfRead.stmt,
  388.                          2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  389.                          SUBSCRIBER_NUMBER_SUFFIX_LENGTH+1,0,
  390.                          uh->updateServerNoOfRead.values.suffix,0,NULL);
  391.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  392.       printf("Unable to prepare read noOfRead param 2n");
  393.       return(-1);
  394.    }
  395.    /*----------------*/
  396.    /* Insert Session */
  397.    /*----------------*/
  398.    rc = SQLAllocStmt(uh->hdbc, &uh->insertSession.stmt);
  399.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  400.       printf("Unable to allocate update noOfRead statementn");
  401.       return(-1);
  402.    }
  403.    rc = SQLPrepare(uh->insertSession.stmt,(SQLCHAR *) insert_session_stmnt, SQL_NTS);
  404.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  405.       printf("Unable to prepare insert session statementn");
  406.       return(-1);
  407.    }
  408.    rc = SQLBindParameter(uh->insertSession.stmt,
  409.                          1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  410.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  411.                          uh->insertSession.values.number,0,NULL);
  412.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  413.       printf("Unable to prepare read sessions param 1n");
  414.       return(-1);
  415.    }
  416.    rc = SQLBindParameter(uh->insertSession.stmt,
  417.                          2,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  418.                          0,0,
  419.                          &uh->insertSession.values.serverId,0,NULL);
  420.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  421.       printf("Unable to prepare read noOfRead param 2n");
  422.       return(-1);
  423.    }
  424.    rc = SQLBindParameter(uh->insertSession.stmt,
  425.                          3,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  426.                          SESSION_DETAILS_LENGTH+1,0,
  427.                          uh->insertSession.values.details,0,NULL);
  428.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  429.       printf("Unable to prepare read sessions param 1n");
  430.       return(-1);
  431.    }
  432.    /*----------------------------*/
  433.    /* Update subscriber sessions */
  434.    /*----------------------------*/
  435.    rc = SQLAllocStmt(uh->hdbc, &uh->updateSubscriberSession.stmt);
  436.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  437.       printf("Unable to allocate update noOfRead statementn");
  438.       return(-1);
  439.    }
  440.    rc = SQLPrepare(uh->updateSubscriberSession.stmt,(SQLCHAR *) update_subscriber_session_stmnt, SQL_NTS);
  441.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  442.       printf("Unable to prepare update subscriber session statementn");
  443.       return(-1);
  444.    }
  445.    rc = SQLBindParameter(uh->updateSubscriberSession.stmt,
  446.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  447.                          0,0,
  448.                          &uh->updateSubscriberSession.values.activeSessions,0,NULL);
  449.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  450.       printf("Unable to prepare read noOfRead param 2n");
  451.       return(-1);
  452.    }
  453.    rc = SQLBindParameter(uh->updateSubscriberSession.stmt,
  454.                          2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  455.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  456.                          uh->updateSubscriberSession.values.number,0,NULL);
  457.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  458.       printf("Unable to prepare read sessions param 1n");
  459.       return(-1);
  460.    }
  461.    /*---------------------*/
  462.    /* Update no of Insert */
  463.    /*---------------------*/
  464.    rc = SQLAllocStmt(uh->hdbc, &uh->updateServerNoOfInsert.stmt);
  465.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  466.       printf("Unable to allocate update noOfRead statementn");
  467.       return(-1);
  468.    }
  469.    rc = SQLPrepare(uh->updateServerNoOfInsert.stmt,(SQLCHAR *) update_noOfInsert_stmnt, SQL_NTS);
  470.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  471.       printf("Unable to prepare update noOfRead statementn");
  472.       return(-1);
  473.    }
  474.    rc = SQLBindParameter(uh->updateServerNoOfInsert.stmt,
  475.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  476.                          0,0,
  477.                          &uh->updateServerNoOfInsert.values.serverId,0,NULL);
  478.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  479.       printf("Unable to prepare read noOfRead param 1n");
  480.       return(-1);
  481.    }
  482.    rc = SQLBindParameter(uh->updateServerNoOfInsert.stmt,
  483.                          2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  484.                          SUBSCRIBER_NUMBER_SUFFIX_LENGTH+1,0,
  485.                          uh->updateServerNoOfInsert.values.suffix,0,NULL);
  486.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  487.       printf("Unable to prepare read noOfRead param 2n");
  488.       return(-1);
  489.    }
  490.    /*----------------*/
  491.    /* Delete Session */
  492.    /*----------------*/
  493.    rc = SQLAllocStmt(uh->hdbc, &uh->deleteSession.stmt);
  494.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  495.       printf("Unable to allocate update noOfRead statementn");
  496.       return(-1);
  497.    }
  498.    rc = SQLPrepare(uh->deleteSession.stmt,(SQLCHAR *) delete_session_stmnt, SQL_NTS);
  499.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  500.       printf("Unable to prepare insert session statementn");
  501.       return(-1);
  502.    }
  503.    rc = SQLBindParameter(uh->deleteSession.stmt,
  504.                          1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  505.                          SUBSCRIBER_NUMBER_LENGTH+1,0,
  506.                          uh->deleteSession.values.number,0,NULL);
  507.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  508.       printf("Unable to prepare read sessions param 1n");
  509.       return(-1);
  510.    }
  511.    rc = SQLBindParameter(uh->deleteSession.stmt,
  512.                          2,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  513.                          0,0,
  514.                          &uh->deleteSession.values.serverId,0,NULL);
  515.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  516.       printf("Unable to prepare read noOfRead param 2n");
  517.       return(-1);
  518.    }
  519.    /*---------------------*/
  520.    /* Update no of Delete */
  521.    /*---------------------*/
  522.    rc = SQLAllocStmt(uh->hdbc, &uh->updateServerNoOfDelete.stmt);
  523.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  524.       printf("Unable to allocate update noOfRead statementn");
  525.       return(-1);
  526.    }
  527.    rc = SQLPrepare(uh->updateServerNoOfDelete.stmt,(SQLCHAR *) update_noOfDelete_stmnt, SQL_NTS);
  528.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  529.       printf("Unable to prepare update noOfRead statementn");
  530.       return(-1);
  531.    }
  532.    rc = SQLBindParameter(uh->updateServerNoOfDelete.stmt,
  533.                          1,SQL_PARAM_INPUT,SQL_C_DEFAULT,SQL_INTEGER,
  534.                          0,0,
  535.                          &uh->updateServerNoOfDelete.values.serverId,0,NULL);
  536.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  537.       printf("Unable to prepare read noOfRead param 1n");
  538.       return(-1);
  539.    }
  540.    rc = SQLBindParameter(uh->updateServerNoOfDelete.stmt,
  541.                          2,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,
  542.                          SUBSCRIBER_NUMBER_SUFFIX_LENGTH+1,0,
  543.                          uh->updateServerNoOfInsert.values.suffix,0,NULL);
  544.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  545.       printf("Unable to prepare read noOfRead param 2n");
  546.       return(-1);
  547.    }
  548.    /*-------------------------------*/
  549.    /* Commit all prepare statements */
  550.    /*-------------------------------*/
  551.    rc = SQLTransact(uh->henv, uh->hdbc, SQL_COMMIT);
  552.    if( rc != SQL_SUCCESS && rc != SQL_SUCCESS_WITH_INFO) {
  553.       printf("Unable to commit all prepare insert statementn");
  554.       return(-1);
  555.    }
  556.    return(0);
  557. }