ORACLEOCCI编程

上传人:无*** 文档编号:105362557 上传时间:2022-06-11 格式:DOC 页数:22 大小:248.50KB
收藏 版权申诉 举报 下载
ORACLEOCCI编程_第1页
第1页 / 共22页
ORACLEOCCI编程_第2页
第2页 / 共22页
ORACLEOCCI编程_第3页
第3页 / 共22页
资源描述:

《ORACLEOCCI编程》由会员分享,可在线阅读,更多相关《ORACLEOCCI编程(22页珍藏版)》请在装配图网上搜索。

1、目录1.1.总体流程图21.2.执行SQL语句的流程图22.流程图具体说明32.1.创建与终止OCCI环境变量3创建OCCI环境变量3终止OCCI环境变量42.2.连接与断开数据库4连接数据库4断开数据库42.3.创建与断开连接池4创建连接池4断开连接池52.4.创建与终止Statement对象52.4.1.创建Statement对象5终止Statement对象53.执行SQL语句(Statement类)63.1.执行SQL语句的方法63.2.执行非查询语句63.2.1.准备SQL语句63.2.2.绑定输入参数值63.2.3.执行非查询语句73.3.执行查询语句(SELECT)73.3.1.准

2、备SQL语句73.3.2.绑定输入参数值73.3.3.执行查询语句73.3.4.定义输出变量73.3.5.推进或处理数据83.4.输出参数声明83.5.事务提交83.5.1.手动提交83.5.2.自动提交84.OCCI常用类简要介绍94.1.Environment类94.2.Connection类94.3.ConnectionPool类104.4.Statement类104.5.ResultSet类114.6.PObject类114.7.SQLException类124.8.Date类124.9.Number类125.附录:代码示例135.1.查询流程处理示例135.2.非查询流程处理示例14

3、5.3.批量处理非查询语句155.4.查询语句中批量取数175.5.MERGE语句的使用19 1. 流程图1.1. 总体流程图编写OCCI程序的总体流程图,如下所示:1.2. 执行SQL语句的流程图在OCCI中处理SELECT语句跟处理INSERT、UPDATE、CREATE等语句的方法是不一样的,其中SELECT语句是有返回结果,其它语句没有返回结果,所以必须区分SQL语句是否为查询语句,然后按照各自的流程处理。流程图如下所示:注:标*号的过程为可选项2. 流程图具体说明2.1. 创建与终止OCCI环境变量创建OCCI环境变量Environment类是OCCI程序的基础类,所有的OCCI对象

4、的建立都是依计Environment对象来创建的,所以Environment对象的建立必须放在第一位,而且也必须是最后一个被终止的。例如:首先创建一个Environment对象env,然后通过env创建一个Connection对象conn,conn是连接了数据库的对象;终止时,却反过来先终止对象conn,再终止对象env。具体Environment对象的创建方法如下所示:Environment *env = Environment:createEnvironment();注意:createEnvironment()方法有以下几个参数模式:1 在线程环境中运行分为互斥线程(THREADEC_MU

5、TEXED)、并行线程(THREADEC_UMMUTEXED)。2 使用对象(OBJECT)。3 利用共享数据结构(SHARED)。终止OCCI环境变量Environment对象的终止必须是放在最后一位,即等所有其它OCCI对象被终止完后再终止Environment对象。终止Environment对象的方法如下所示:Environment:terminateEnvironment(env);2.2. 连接与断开数据库连接数据库创建完一个Environment对象env后,可以调用Environment类下的方法createConnection()来创建一个Connection对象conn;通过

6、createConnection()方法我们可以连接到任意一个数据库中。连接数据库的具体方法如下所示:Connection *conn = env-createConnection(usename,password,connectionstring);参数说明:usename是登录数据库的用户名; password是登录数据库用户的密码; connectstingr是数据库的连接串(可选)。断开数据库当对数据库操作完成之后,我们必须断开程序与数据库的连接,断开数据库的连接方法与创建的方法一样来自Environment类下的terminateConnection()函数。方法如下所示:env-t

7、erminateConnection(conn);2.3. 创建与断开连接池创建连接池对于很多共享服务器或中间层应用程序而言,数据库的连接必须要能被许多线程所使用,如果为每个线程都开一个数据库连接的话,当数量一大效率会明显的降低,所以我们通过创建连接池来处理这样的情况。创建完一个Environment对象env后,可以调用Environment类下的方法createConnectionPool()来创建一个Connection对象connPool;通过createConnectionPool()方法我们可以连接到任意一个数据库中。连接池创建的具体方法如下所示:ConnectionPool *c

8、onnPool = env-createConnectionPool(const string &poolUseName,const string &poolPassWord,const string &connectstring,unsigned int minConn,unsigned int maxConn,unsigned int incrConn);参数说明:poolUseName是连接池的用户名; poolPassWord是连接数据库的密码; connectstring是数据库连接串; minConn是最小连接数; maxConn是最大连接数;incrConn是指所有已连接数处于繁

9、忙中且小于最大连接数时,每次增加的连接数。断开连接池当对数据库操作完成之后,我们必须断开程序与数据库的连接,断开数据库的连接方法与创建的方法一样来自Environment类下的terminateConnectPool()函数。方法如下所示:env-terminateConnectPool(connPoll);2.4. 创建与终止Statement对象2.4.1. 创建Statement对象Statement类包含了执行SQL语句的所有方法,是对数据库操作的具体实现。Statement对象stmt的创建是通过调用Connection类下的createStatement()函数实现,所以State

10、ment对象的创建必须是在Connection对象创建之后。createStatement()函数可以带参数或不带参数,如果带参数的话,参数必须是一个SQL语句;如果没有带参数,则在后面必须用Statement类下setSQL()函数为Statement对象赋一个SQL语句。Statement对象的创建方法如下所示:Statement *stmt = conn-createStatement();终止Statement对象当对数据库的操作完成时,我们必须先终止Statement对象,再断开Connection对象。终止Statement对象的方法如下所示:Conn-terminateState

11、ment(stmt);3. 执行SQL语句(Statement类)3.1. 执行SQL语句的方法执行SQL的所有方法都包含在Statement类下。SQL语句按返回结果分,可以分为两种:一种是有返回值的(查询语句),另外一种是没有返回值的(非查询语句)。一般情况下,在执行查询SQL语句我们使用executeQurey()函数,在执行非查询SQL语句时我们使用executeUpdate()函数。1 stmt-execute();执行所有非特殊声明的SQL语句。2 stmt-executeUpdate();执行所有DDL和DML(一条记录)的SQL语句。3 stmt-executeQurey();

12、执行所有查询SQL语句。4 stmt-executeArrayUpdate();执行多记录的DML的SQL语句。例如:stmt-executeUpdate(“create table student (sno number(10),sname varchar2)”);stmt-executeUpdate(“insert into student (sno,sname) values(1,ZHANGSAN)”);stmt-executeQurey(“select sno from student ”);3.2. 执行非查询语句当我们创建了一个Statement对象stmt后,可以通过Statem

13、ent类下的方法setSQL()为stmt设置不同的SQL语句。 3.2.1. 准备SQL语句stmt-setSQL(string &sql);例如:stmt-setSQL(“insert into student (sno,sname) values(:1,:2)”)其中::1、:2是参数,通过给参数赋不同的值来实现。与之对应的函数getSQL()是取出当前对象对应的SQL语句。3.2.2. 绑定输入参数值在Statement类中包含了所有参数的赋值方法,赋值方法set(unsigned int paramindex,type values),其中paramindex参数是代表所赋值参数在S

14、QL语句中的第几个参数,与type代表中所赋值的类型,values是所赋的值。可以是Int、String、Date等等。例如:stmt-setString(1,zhangsan);指把zhangsan赋值给第一个参数,参数类型为字符串型。stmt-setInt(2,1009);指把1009赋值给第二个参数,参数类型为整型。3.2.3. 执行非查询语句当SQL语句准备好后,就可以执行SQL语句了,方法如下所示:stmt-executeUpdate();3.3. 执行查询语句(SELECT)在执行查询语句时有返回查询结果(可能是一条,也可能是多条),我们必须创建一个ResultSet对象来处理,通

15、过使用ResultSet对象的next()方法我们可以一条一条(或批量)地处理结果集。具体使用如下所示:3.3.1. 准备SQL语句详见3.2.1。3.3.2. 绑定输入参数值详见3.2.2。3.3.3. 执行查询语句ResultSet *rs = stmt-executeQuery();3.3.4. 定义输出变量根据SELECT语句查询的列的类型定义对应的变量,此变量用于存储SELECT查询的结果集。3.3.5. 推进或处理数据如果结果集为多条记录,我们可以批量或者一条条处理数据,使用ResultSet类下的方法next(unsigned int numRows)。在Statement类中包

16、含了所有参数的取值方法。取值方法get(unsigned int paramindex),其中paramindex参数是代表所取值列在SQL语句中的第几列,代表该列对应的类型。可以是Int、String、Date等等。例如:rs-next(unsigned int numRows);/其中numRows为批量处理的记录行数。stmt-getInt(paramindex);获取整型参数值,其中paramindex为参数所在的位置;stmt-getString(paramindex);获取字符型参数值其中paramindex为参数所在的位置;3.4. 输出参数声明在调用存储过程时,有时候有返回参数

17、,这些返回参数都必须在调用之前先用Statement类下的registerOutParam()方法声明,声明方法的使用如下所示:stmt-registerOutParam(paramName,paramType,paramSize);其中:paramName是参数名或者参数所在位置; paramType是参数类型(比如:TYPE:OCCIINT); paramSize是参数的大小。3.5. 事务提交3.5.1. 手动提交当事务的提交设置为手动时,每完成一个事务我们都必须调用Connection类下的commit()或rollback()方法来提交一个事务。使用方法如下所示:手动提交必须调用以下

18、函数:Connection:commit();Connection:rollback();3.5.2. 自动提交在对数据库进行操作的过程中,一个事务的提交是用手动还是自动,我们可以调用Statement类下的setAutoCommit()方法来设置。使用方法如下所示:设置自动提交:Statement: setAutoCommit (TRUE);设置手动提交:Statement:setAutoCommit(FALSE);4. OCCI常用类简要介绍4.1. Environment类Environment类提供了管理OCCI对象的内存及其它资源的一个环境,包含以下方法:1 createConnec

19、tion(const string usename,const string password,const string connstring);指与数据库建立一个连接。2 createConnectionPoll(const string &poolUseName,const string &poolPassWord,const string &connectstring,unsigned int minConn,unsigned int maxConn,unsigned int incrConn);创建连接池。参数说明:poolUseName是连接池的用户名; poolPassWord是连

20、接数据库的密码; connectstring是数据库连接串; minConn是最小连接数; maxConn是最大连接数;incrConn是指所有已连接数处于繁忙中且小于最大连接数时,每次增加的连接数。3 createEnironment(Mode mode );创建一个环境对象,其中mode是模式(可选DEFAULT、THREADED_MUTEXED、THREADED_UN-MUTEXED、OBJECT、SHARED值)。4 getCurrentHeapSize();指在同一环境下已经分配的内存数。5 getOCIEnironment();返回一个OCI环境指针。6 terminateConn

21、ection(Connection *conn);断开与数据库的连接。7 terminateConnection(ConnectionPool *poolconn);断开与数据库的连接池。8 terminateEnironment(Einironment *env);终止OCCI环境变量。4.2. Connection类Connection类提供了C+程序与指定数据库的连接,包含以下方法:1 changePassword(const string &user,const string &oldPassword,const string &newPassword);改变当前用户的密码。2 Com

22、mit();提交事务。3 createStatement(const string &sql=”);创建一个Statement对象。4 flushCache();5 rollback();事务的回滚。6 terminateStatement(Statement *stmt).终止一个Statement对象,并释放它占有的所有资源。4.3. ConnectionPool类ConnectionPoll类提供了C+程序与指定数据库间的连接池,包含以下方法:1 createConnection(const string &username,const string &password);创建一个连接。

23、2 getBusyConnections();返回连接池中被占用的连接数量。3 getMaxConnections();返回连接池的最大连接数。4 getMinConnections();返回连接池的最小连接数。5 getOpenConnections();返回连接池中已经被打开的连接数。6 getPollName();返回连接池的名称。7 getTimeOut();返回连接池的超时时间。8 setErrorOnBusy();设置异常,当连接池处于繁忙或达到最大连接数后。9 serPoolSize(unsigned int minConn,unsigned int maxConn,unsign

24、ed int incrConn);设置连接池的大小,其中参数minConn是最小连接数,maxConn是最大连接数,incrConn是递增连接数。10 setTimeOut();设置超时时间。11 terminateConnection(Connection *conn);断开连接。4.4. Statement类Statement对象主要被用来执行SQL语句,它可以运行一个查询语句返回一个结果集也可以运行UPDATE、DELETE等SQL语句。1 addIteration();增加一个循环。2 closeResultSet(ResultSet *rs);关闭一个结果集。3 closeStrea

25、m(Stream *stream);关闭一个已定义的流。4 execute(const string &sql = “”);执行一个SQL语句,如果前面使用的setSQL()方法,则参数sql可以为空。5 executeArrayUpdate(unsigned int arrayLength);同时修改多条记录,前面必须使用了setDataBuffer()方法设置一个数量或设置了一个流(stream)。6 executeQuery();执行一个查询语句。7 executeUpdate();执行DDL、DML语句,如:INSERT、UPDATE、DELETE、CREATE等等。8 getAuto

26、Commit();返回是否事务自动提交。9 getDate(unsigned int paramindex);返回DATE型数据。10 getDouble(unsigned int paramindex);返回DOUBLE型数据。11 getFloat(unsigned int paramindex);返回FLOAT型数据。12 getInt(unsigned int paramindex);返回INT型数据。13 getNumber(unsigned int paramindex);返回NUMBER型数据。14 getRef(unsigned int paramindex);返回REF参数值

27、。15 getResultSet();得到一个结果集(ResultSet)。16 getSQL();返回当前的SQL语句。17 getString(unsigned int paramindex);返回STRING型数据。18 getUpdateCount();返回被更新的数量。19 isNull(unsigned int paramindex);判断第X个值是否为空。20 isTruncated(unsigned int paramindex);判断第X个值是否被截取。21 setAutoCommit(bool autocommit);设置事务是否自动提交。22 setDouble(unsi

28、gned int paramindex,double x);赋一个double型的值。23 setFloat(unsigned int paramindex,float x);赋一个float型的值。24 setInt(unsigned int paramindex,int x);赋一个INT型的值。25 setNull(unsigned int paramindex,TYPE type);某参数设置为空。26 setNumber(unsigned int paramindex,const number &x);赋一个Number型的值。27 setObject(unsigned int pa

29、ramindex,PObject *x);赋一个PObject型的值。28 setString(unsigned int paramindex,const string &x);赋一个string型的值。29 setSQL(const string &sql);设置一个SQL语句。30 Status();返回当前的状态。4.5. ResultSet类ResultSet类是查询数据表的结果集,它包含以下方法:1 cancel();取消结果集。2 closeStream(Stream *stream);关闭一个流。3 getDouble(unsigned int colIndex);返回doubl

30、e型的值。4 getFloat(unsigned int colIndex);返回float型的值。5 getInt(unsigned int colIndex);返回int型的值。6 getMaxColumnSize(unsigned int colIndex);返回某列包含的数据量。7 getNumber(unsigned int colIndex);返回number型的数据。8 getPObject(unsigned int colIndex);返回PObject型的数据。9 getRowid(unsigned int colIndex);返回rowid值。10 getString(un

31、signed int colIndex);返回string型的数据。11 isNull(unsigned int colIndex);判断值是否为空。12 isTruncated(unsigned int colIndex);判断值是否被删。13 next(unsigned int numRows);取下numRows条记录。14 status();返回当前状态。4.6. PObject类PObject类包含以下方法:1 fush();2 Connection *getConnection();从一个实例化的永久对象中返回连接。3 isLocked();判断永久对象是否被锁(TRUE或FALS

32、E)。4 isNull();判断永久对象是否为空(TRUE或FALSE)。5 Lock(PObject:LockOption lock_option);在数据库中锁住一个对象,其中lock_option取值为OCCI_LOCK_WAIT、OCCI_LOCK_NOWAIT。6 markDelete();删除数据库中的永久对象。7 markModified();修改永久对象。8 PObject &operator(const PObject &obj);赋值(对象)。9 operator delete(void *obj,size_t size);删除对象,但不能删除数据库中的对象。10 *ope

33、rator new(size_t size);创建临时对象。11 *operator new(size_t size,const Connection *x,const string &tablename,const char *type_name);创建永久对象。12 pin();13 setNull();设置对象为空。14 unmark();不标记永久对象为删除或修改。15 unpin(UnpinOption mode);其中,mode的取值为OCCI_PINCOUNT_RESET、OCCI_PINCOUNT_DECR。4.7. SQLException类SQLException类提供错误

34、代码及其错误信息,包含以下方法:1 getErrorCode();返回数据库中的错误编码。2 getMessage();返回错误信息,没有则为空。4.8. Date类Date类包含以下方法:1、 addDays(int i);返回增加i天后的日期。2、 addMonths(int i);返回增加i个月后的日期。3、 intervalDS daysBetween(const Date &d);返回与d相差的天数。4、 getDate(int &year,unsigned int &month,unsigned int &day,unsigned int &hour,unsigned int &m

35、inute,unsigned int &second );返回分年月日小时分秒格式。5、 getSystemDate(const Environment *env);返回系统日期。6、 isNull();判断是否为空;7、 lastDay();返回当月的最后一天日期。8、 setDate(int &year=1,unsigned int &month=1,unsigned int &day=1,unsigned int &hour=0,unsigned int &minute=0,unsigned int &second=0);设置日期值。9、 setNull();设置为空。4.9. Numb

36、er类Number类包含以下常用方法:1、 abs();返回绝对值。2、 floor();向下取整。3、 isNull();判断是否为空。4、 operator+(const Number &a,const Number &b);两数相加。5、 operator-( const Number &a,const Number &b);两数相减(a-b)。6、 operator*(const Number &a,const Number &b);两数相乘。7、 operator/(const Number &a,const Number &b);两数相除。8、 operator%(const Nu

37、mber &a,const Number &b);求余。9、 operator(const Number &a,const Number &b);a是否小于b。10、 operator(const Number &a,const Number &b);a是否大于b。12、 operator=(const Number &a,const Number &b);a是否大于等于b。13、 operator=(const Number &a,const Number &b);a与b是否相等。14、 operator!=(const Number &a,const Number &b);判断a是否不等于

38、b。15、 operator char();将number型转化为char型。16、 operator signed char();将number型转化为有符号char型。17、 operator double();将number型转化为double型。18、 operator float();将number型转化为float型。19、 operator int();将number型转化为int型。20、 operator long();将number型转化为long型。21、 operator short();将number型转化为short int型。22、 setNull();设置为空。

39、23、 trunk();取整。5. 附录:代码示例5.1. 查询流程处理示例下面给出了一个查询的例子qrystudent.cpp,通过使用OCCI接口函数查询数据库表student的信息(学号,学生姓名)。#include #include using namespace oracle:occi;using namespace std;int main () Environment *env;Connection *conn;Statement *stmt;ResultSet *rs;string username = “ipd”;string password = “ipd”;string

40、connstring = “ora9i”;string sql,strname;int isno;env = Environment:createEnvironment(); /创建一个环境变量conn = env-createConnection(username,password,connstring); /创建一个数据库连接对象stmt = conn-createStatement(); /创建一个Statement对象sql = “ SELECT sno,sname FROM student “; /拼接一个SQL语句stmt-setSQL(sql); /设置SQL语句到Stateme

41、nt对象中try rs = stmt-executeQuery();/执行SQL语句while (rs-next() /用循环,一条一条地取得查询的结果记录isno = rs-getInt(1);/取出第一列的值(对应为int型)strname=rs-getString(2); /取出第二列的值(对应为string型)cout isno “ AND “ strname endl;cout “SELECT SUCCESS” endl; catch (SQLException ex) cout “ Error Number : “ ex.getErrorCode() endl; /取出异常代码co

42、ut ex.getMessage() terminateStatement(stmt); /终止Statement对象env-terminateConnection(conn); /断开数据库连接Environment:terminateEnvironment(env); /终止环境变量return 1;5.2. 非查询流程处理示例下面给出了一个insert例子inserttab.cpp,通过使用OCCI接口函数往数据库表student中插入信息(学号,学生姓名)。#include #include using namespace oracle:occi;using namespace std

43、;int main () Environment *env;Connection *conn;Statement *stmt;string username = “ipd”;string password = “ipd”;string connstring = “ora9i”;string sql;env = Environment:createEnvironment(); /创建一个环境变量conn = env-createConnection(username,password,connstring); /创建一个数据库连接对象stmt = conn-createStatement();

44、/创建一个Statement对象sql = “ INSERT INTO student (sno,sname) VALUES ( :x,:y) “; /拼接SQL语句stmt-setSQL(sql); /设置SQL语句到Statement对象中try stmt-setInt(1,10001); /给第一个参数x赋值stmt-setString(2,”zhangsan”); /给第二个参数y赋值stmt-executeUpdate(); /执行SQL语句cout “INSERT SUCCESS” endl; catch (SQLException ex) cout “ Error Number

45、: “ ex.getErrorCode() endl; /获得异常代码cout ex.getMessage() terminateStatement(stmt); /终止Statement对象env-terminateConnection(conn); /断开数据库连接Environment:terminateEnvironment(env); /终止环境变量return 1;5.3. 批量处理非查询语句在批量处理非查询语句时,首先必须使用m_stmt-setMaxIterations(unsigned int maxnum)方法设置最大的批处理数;然后使用setMaxParamSize(un

46、signed int paramindex,int paramsize)方法设置对应参数的大小,对于有固定长度的参数可以不必重新设置,如int,double;最后循环绑定参数使用set()方法,每循环一次必须使用addIteration()方法再进行下一次循环,直到最后一次。例子如下所示:#include #include using namespace oracle:occi;using namespace std;int main () Environment *env; Connection *conn; Statement *stmt; string username = bill;

47、string password = bill; string connstring = jftest; string sql;int isno2=21,22,i,iage2=18,19;string csname2=namea,nameb; try env = Environment:createEnvironment(); conn = env-createConnection(username,password,connstring); stmt = conn-createStatement(); stmt-setAutoCommit(false); sql = INSERT INTO s

48、tudent (sno,sname,age) VALUES (:x,:y,:z) ; m_stmt-setSQL(sql); m_stmt-setMaxIterations(2); m_stmt-setMaxParamSize(1,sizeof(int); m_stmt-setMaxParamSize(2,sizeof(string); m_stmt-setMaxParamSize(3,sizeof(int); coutsetMaxIterations success !endl; /coutgetMaxIterations = getMaxIterations()endl; for (i=0

49、;isetInt(1,isnoi); m_stmt-setString(2,csnamei); m_stmt-setInt(3,iagei); /cout isnoi and csnamei and iagei addIteration(); coutgetMaxIterations = getMaxIterations()endl; coutset successexecuteUpdate(); m_conn-commit(); cout INSERT DD SUCCESS getUpdateCount(); cout ON inum+1 shi fail ! endl; cout INSE

50、RT Error Number : ex.getErrorCode() endl; cout ex.getMessage() rollback(); return 0; conn-terminateStatement(stmt); env-terminateConnection(conn); Environment:terminateEnvironment(env); cout PROGRAM IS END . endl; return 1;5.4. 查询语句中批量取数在批量取数时,使用setDataBuffer()方法来设置接收数据缓冲区大小,例子如下所示:#include #include

51、 using namespace oracle:occi;using namespace std;int main () Environment *env; Connection *conn; Statement *stmt; ResultSet *rs; string username = bill; string password = bill; string connstring = jftest; string sql; int i,numrows=5,isnum,ilnum,ipos=0; int isno5,vsno20,ii=0,x20; ub2 isnolen5,snamele

52、n5; char sname520,vsname2020; for (i=0;i20;i+) isnoleni=sizeof(isnoi);snameleni=strlen(snamei+1); cout PROGRAM START . createConnection(username,password,connstring); stmt = conn-createStatement(); sql = SELECT sno,sname FROM student ; stmt-setSQL(sql); rs = stmt-executeQuery(); rs-setDataBuffer(1,i

53、sno,OCCIINT,sizeof(int); rs-setDataBuffer(2,sname,OCCI_SQLT_STR,sizeof(sname0),snamelen); ilnum = rs-getNumArrayRows(); cout ilnum = ilnum next(numrows) isnum = rs-getNumArrayRows(); cout isnum = isnum endl; for(i=0;igetNumArrayRows(); cout ilnum = ilnum endl; for(i=0;iilnum-isnum;i+) vsnoipos = isn

54、oi; vsnameipos = snamei; ipos = ipos+1; cout SELECT RESULT IS . endl; for(i=0;iilnum;i+) coutvsnoi AND vsnameiendl; cout SELECT RESULT END ! endl; cout SELECT DD SUCCESS endl; catch (SQLException ex) cout Error Number : ex.getErrorCode() endl; cout ex.getMessage() terminateStatement(stmt); env-termi

55、nateConnection(conn); Environment:terminateEnvironment(env); cout PROGRAM END ! endl; return 1;5.5. MERGE语句的使用在使用MEGER语句时,USING部分的取值应该使用表或者SELECT param1,param2 FROM DUAL,其中param1,param2是常量值,可以通过数组赋值,并且每列值都应该取别名,在后面的使用中就只用别名。例子如下所示:#include #include using namespace oracle:occi;using namespace std;int main () Environment *env; Connection *conn; Statement *stmt; string

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!