#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; }