2022年使用occi连接oracle的方 .pdf
使用 occi 连接 oracle的方法 .txt爱一个人很难,恨一个人更难,又爱又恨的人最难。爱情永远不可能是天平,想在爱情里幸福就要舍得伤心!有些烦恼是我们凭空虚构的,而我们却把它当成真实去承受。使用occi连接 oracle的方法,不需要安装客户端/by rainfish from http:/ 1. 下载首先下载occi所需要的库:url=http:/ 下载 linux版本。然后下载occi 所需要的头文件:即instantclient-sdk http:/ . inux32-11.2.0.1.zip 解压后里面有所需要的头文件,主要是occi.h 2. 将 occi所需库拷贝到 /usr/local/lib/ 然后:ln -s libocci.so libocci.so.11.1 ln -s libclntsh.so.11.1 libclntsh.so 3. 示例,根据互联网修改的/oracle2.cpp #include #include #include #include #include #include #include #include #include #include using namespace oracle:cci; class dbAccessor public: dbAccessor(); dbAccessor(); int get_dbstat(); bool Connect_DB(); void Disconn_DB(); bool ExecuteUpdate(const char* sql); ResultSet* ExecuteQuery(const char* sql); void ClearQuery(ResultSet* set); void Init(const char* dbName,const char* dbUser,const char* dbPass); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - void SetDate(unsigned int paramIndex, time_t timeVal); private: Environment* m_env; Connection* m_conn; Statement* m_stmt; const char *m_szUser; const char *m_szPassword; const char *m_szDbName; bool bConnected; ; using namespace std; using namespace oracle:cci; dbAccessor:dbAccessor() bConnected=false; m_env=0; m_conn=0; m_stmt=0; dbAccessor:dbAccessor() Disconn_DB(); void dbAccessor:Init(const char* dbName,const char* dbUser,const char* dbPass) m_szDbName = dbName; m_szUser = dbUser; m_szPassword = dbPass; bool dbAccessor:Connect_DB() if(m_env =0) m_env = Environment:createEnvironment(); if(m_conn=0) try m_conn=m_env-createConnection(m_szUser,m_szPassword,m_szDbName); catch (SQLException& ex) m_conn = 0; cout connect to database failed: ex.getMessage() terminateStatement(m_stmt); if(m_conn!=0 & m_env!=0) m_env-terminateConnection(m_conn); / 执行数据库更新操作,包括insert、update 、delete操作bool dbAccessor:ExecuteUpdate(const char* sql) bool update_OK = true; if(sql=0) exit(1); if(m_conn=0&m_env=0) exit(1); try m_stmt=m_conn-createStatement(sql); catch (SQLException& ex) m_stmt = NULL; cout ExecuteUpdate failed: ex.getMessage() executeUpdate(); return update_OK; / 执行数据库查询操作,即select操作ResultSet* dbAccessor:ExecuteQuery(const char* sql) ResultSet* set=0; if(sql=0) exit(1); if(m_conn=0&m_env=0) exit(1); try m_stmt=m_conn-createStatement(sql); catch (SQLException& ex) m_stmt = NULL; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 6 页 - - - - - - - - - cout ExecuteQuery failed: ex.getMessage() executeQuery(); return set; void dbAccessor:ClearQuery(ResultSet* set) if(m_stmt=0) exit(1); if(set=0) exit(1); m_stmt-closeResultSet(set); void dbAccessor:SetDate(unsigned int paramIndex, time_t timeVal) couttimeValcreateStatement(); assert(m_stmt != NULL); tm* timeStruct = localtime(&timeVal); Date date(m_env, timeStruct-tm_year + 1900, timeStruct-tm_mon + 1, timeStruct-tm_mday, timeStruct-tm_hour, timeStruct-tm_min, (timeStruct-tm_sec = 60) ? 0 : timeStruct-tm_sec); m_stmt-setDate(paramIndex, date); int main(void) dbAccessor obj; obj.Init(10.1.99.200:1521/orcl,gist,gist; bool conn = obj.Connect_DB(); if(!conn) perror(obj.Connect_DB()n; exit(1); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 6 页 - - - - - - - - - else printf(obj.Connect_DB() OKn; /* / 1、插入数据库操作string sql = insert into EMAIL0(emailid,checkintime,clientip,clientport,serverip,serverport,capturetime,type,username,password,sendaddress,receiveaddress,subject,ccaddress) ; sql += values(1238673850,to_date(04-3-2009,MM-DD-YYYY),127.0.0.1,4327,serverip,110,to_date(04-3-2009,MM-DD-YYYY),1,user,pass,sendaddress,receiveaddress,subject,ccaddress); obj.ExecuteUpdate(sql.c_str(); / 2、查询数据库操作sql = select emailid,to_char(checkintime,YYYY-MM-DD HH24:MI:SS),clientip from EMAIL0; / 第一列 emailid:Int型;第二列checkintime:Date 类型,转换为字符串类型输出;第三列 clientip:string字符串类型ResultSet* set=obj.ExecuteQuery(sql.c_str(); while(set-next() cout getInt(1) endl; /获取第一列值,int类型 cout getString(2) endl; /获取第二列值,date 类型转换成了字符串类型 cout getString(3) endl; /获取第三列值,string类型 obj.ClearQuery(set); */ return 0; /makefile CC = g+ PROGS = oracle1 oracle2 INCL_PATH = -I/opt/tools/occi/include CFLAGS = -g -Wall -Wno-deprecated $INCL_PATH LIBS = -locci -lclntsh 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 6 页 - - - - - - - - - CLEANFILES = core core.* *.core *.o temp.* *.out typescript* *.lc *.lh *.bsdi *.sparc *.uw all: $PROGS oracle1: oracle1.o $CC $CFLAGS -o $ oracle1.o $LIBS oracle2: oracle2.o $CC $CFLAGS -o $ oracle2.o $LIBS .cpp.o: $(CC) $(CFLAGS) -o $ -c $ clean: rm -f $PROGS $CLEANFILES 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 6 页 - - - - - - - - -