• Topic
  • Discussion
  • UdaWikiWeb.CodeSamplesC(Last) -- Owiki? , 2016-08-19 14:59:44 Edit owiki 2016-08-19 14:59:44

    /* $Header: 
    * 
    * Synopsis: Test ODBC application for using prepared statement with bound parameters. 
    *           Uses test table.  Modify according to your database. 
    */ 
    /*******************************************************************************/ 
    
    #include <stdio.h> 
    #include <string.h> 
    
    #include "isql.h" 
    #include "isqlext.h" 
    
    /*******************************************************************************/ 
    
    HENV    henv=SQL_NULL_HENV; 
    HDBC    hdbc=SQL_NULL_HDBC; 
    HSTMT hstmt; 
    SQLINTEGER retval = 0; 
    int main() 
    { 
        char szDsn[128] ="" , szLogin[25] ="", szPassword[25] = "", name[] = "50", 
            statement[] = "select * from test_table where name = ?"; 
    
        RETCODE returncode; 
            SDWORD  cbOut; 
            SQLINTEGER cbValue; 
            SQLSMALLINT numParams; 
            UDWORD connAttr; 
            int i; 
            connAttr = SQL_TXN_READ_COMMITTED; 
        system ("clear"); 
    
        printf("\n Starting Test...\n"); 
    
        strcpy( szDsn, "ORA8I_SOLARIS"); 
        printf( "\n szDsn = %s", szDsn); 
    
        strcpy( szLogin, "scott"); 
        printf( "\n szLogin = %s", szLogin); 
    
        strcpy( szPassword,"tiger"); 
        printf( "\n szPassword = %s\n\n", szPassword); 
    
        returncode = SQLAllocEnv(&henv); 
        returncode = SQLAllocConnect(henv,&hdbc); 
    
        if(returncode==SQL_SUCCESS) 
            returncode = SQLConnect(hdbc,(unsigned char *)szDsn,SQL_NTS, 
                        (unsigned char *)szLogin,SQL_NTS, 
                        (unsigned char *)szPassword,SQL_NTS); 
        if(returncode!=SQL_SUCCESS) return 0; 
    
        cbOut  = SQL_NTS; 
    
        returncode = SQLAllocStmt(hdbc, &hstmt); 
    
        SQLSetConnectAttr(hdbc, SQL_TXN_ISOLATION, (SQLPOINTER) connAttr, 255); 
    
        SQLPrepare(hstmt,statement,SQL_NTS); 
    
        SQLNumParams(hstmt, &numParams); 
    
        printf ("Numparams output = %i\n", numParams); 
    
        SQLBindParameter(hstmt,1,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_VARCHAR,4,0,&name,0,&cbOut); 
    
        /* Bind the column we'll be outputting.  */ 
        SQLBindCol(hstmt,1,SQL_C_CHAR, pwd, 20, &cbOut); 
    
        /* Execute the statement */ 
        SQLExecute(hstmt); 
    
        /* Fetch the data */ 
        SQLFetch(hstmt); 
    
        printf ("pwd (OUTPUT) = %s\n",pwd); 
    
        printf ("length of pwd = %i\n",strlen(pwd)); 
    
        SQLFreeStmt(hstmt, SQL_DROP ); 
    
        SQLDisconnect(hdbc); 
        SQLFreeConnect(hdbc); 
    
        SQLFreeEnv(henv); 
    
        printf("\n End of Program\n\n"); 
    
        return 0; 
    } 
    
    int 
    DB_Errors (char *where) 
    { 
    unsigned char buf[250]; 
    unsigned char sqlstate[15]; 
    
    /* 
    *  Get statement errors 
    */ 
    while (SQLError (henv, hdbc, hstmt, sqlstate, NULL, 
    buf, sizeof(buf), NULL) == SQL_SUCCESS) 
    { 
    fprintf (stderr, "%s, SQLSTATE=%s\n", buf, sqlstate); 
    } 
    
      /* 
       *  Get connection errors 
       */ 
      while (SQLError (henv, hdbc, SQL_NULL_HSTMT, sqlstate, NULL, 
          buf, sizeof(buf), NULL) == SQL_SUCCESS) 
        { 
          fprintf (stderr, "%s, SQLSTATE=%s\n", buf, sqlstate); 
        } 
    
      /* 
       *  Get environmental errors 
       */ 
      while (SQLError (henv, SQL_NULL_HDBC, SQL_NULL_HSTMT, sqlstate, NULL, 
          buf, sizeof(buf), NULL) == SQL_SUCCESS) 
        { 
          fprintf (stderr, "%s, SQLSTATE=%s\n", buf, sqlstate); 
        } 
    
      return -1; 
    } 
    
    /*******************************************************************************/ 
    /* End of File */ 
    
    

    Referenced by...