ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:75.65KB ,
资源ID:3813607      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3813607.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OCCI使用指南OCCI编程模式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OCCI使用指南OCCI编程模式.docx

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

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

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

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

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

6、nv-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是指所有已连接数处于繁忙中且小于最大连接数时

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

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

9、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();执行所有查

10、询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后,可以通过Statemen

11、t类下的方法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参数是代表所赋值参数在SQL

12、语句中的第几个参数,与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对象来处理,通过使

13、用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类中包含

14、了所有参数的取值方法。取值方法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. 输出参数声明在调用存储过程时,有时候有返回参数,

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

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

17、ion(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是连

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

19、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

20、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);创建一个连接。

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

22、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

23、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

24、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参数值

25、。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

26、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

27、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

28、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

29、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

30、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

31、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类提供错误代码及其错误信息,包含以下方法:1 getErrorCode();返回数据库中的错误编码。2 getMessage();返回错误信息,没有则为空。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1