[solaris]odbc-oracle,简单测试

#include <string>
#include <iostream>
#include <stdio.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
#include <sqlucode.h>


int main()
{

    HENV henv;
    RETCODE ret;
    ret = ::SQLAllocEnv(&henv);
    if(ret != SQL_SUCCESS)
    {
        std::cout << "alloc henv failed!" << std::endl;
        return -1;
    }    
    HDBC hdbc;
    ret = SQLAllocConnect(henv, &hdbc);
    if(ret != SQL_SUCCESS)
    {
        std::cout << "alloc hdbc failed!" << std::endl;
        return -1;
    }
    
    ret = SQLConnect(hdbc, (SQLCHAR *)("ORCL"), 
                10, 
                (SQLCHAR *)("scott"),
                9, 
                (SQLCHAR *)("tiger"),
                12);
    if(ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    {
        std::cout << "connect failed!" << ret << std::endl;
        return -1;
    }
    HSTMT hstmt;
    ret = SQLAllocStmt(hdbc, &hstmt);
    if(ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    {
        std::cout << "alloc stmt failed!" << std::endl;
        return -1;
    }
    SQLExecDirect(hstmt, (UCHAR *)("select * from dept"), SQL_NTS);
    if(ret != SQL_SUCCESS &&  ret != SQL_SUCCESS_WITH_INFO)
    {
        std::cout << "exec failed!" << std::endl;
        return -1;
    }
    while( (ret = SQLFetch(hstmt)) != SQL_NO_DATA)
    {
        std::cout << "row" << std::endl;
    }

    ret = SQLExecDirect(hstmt,(SQLCHAR*)"create table provider (sno char(5) primary key,sname char(10) not null,status int,city char(10))", SQL_NTS);
        if(ret<0)
        {
                std::cout<<"creat errors."<<std::endl;
                return -1;
        }

        ret = SQLExecDirect(hstmt,(SQLCHAR*)"insert into provider values('S1','精益','20','天津')",SQL_NTS);
        if(ret<0)
        {
               std::cout<<"s1 insert errors."<<std::endl;
               return -1;
        }

       ret = SQLExecDirect(hstmt,(SQLCHAR*)"insert into provider values('S2','西方','30','上海')",SQL_NTS);
        if(ret<0)
        {
                std::cout<<"s2 insert errors."<<std::endl;
                return -1;
         }

       ret = SQLExecDirect(hstmt,(SQLCHAR*)"insert into provider values('S3','邦飞','22','成都')",SQL_NTS);
        if(ret<0)
        {
                std::cout<<"s3 insert errors."<<std::endl;
                return -1;
         }

    ret = SQLExecDirect(hstmt, (SQLCHAR*)"select sname, city FROM provider where sno='s1'", SQL_NTS); 
    if(ret<0)
    {
        std::cout << "Executing statement throught ODBC errors." << std::endl;
        return -1;
    }

    ret = SQLExecDirect(hstmt, (SQLCHAR*)"update provider set sname='浩瀚' where sno='s2'", SQL_NTS);
    if(ret<0)
    {
        std::cout <<" update s2 name error" << std::endl;
    }

    ret = SQLExecDirect(hstmt, (SQLCHAR*)"drop table provider", SQL_NTS);
    if(ret<0)
    {
        std::cout << "drop table provider error." << std::endl;
        return -1;
    }

    std::cout << "done!" << std::endl;
    return 0;
}
posted @ 2015-07-14 10:51  Qt小罗  阅读(342)  评论(0编辑  收藏  举报