oracle OCCI编程

1. 创建OCCI环境变量

Environment *env = Environment::createEnvironment();

Environment对象的建立必须放在第一位,而且也必须是最后一个被终止

2. 终止OCCI环境变量

Environment::terminateEnvironment(env);

3. 连接数据库

Connection *conn = env->createConnection(usename,password,[connectionstring]);

connectstingr是数据库的连接串 (192.168.60.84:1521/orcl)

4. 断开数据库

env->terminateConnection(conn);

5. 创建连接池
数据库的连接必须要能被许多线程所使用,如果为每个线程都开一个数据库连接的话,当数量一大效率会明显的降低,所以我们通过创建连接池来处理这样的情况

ConnectionPool  *connPool= 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 是指所有已连接数处于繁忙中且小于最大连接数时,每次增加的连接数

6. 断开连接池

env->terminateConnectPool(connPoll);

7. 创建Statement对象
Statement类包含了执行SQL语句的所有方法,是对数据库操作的具体实现

Statement *stmt = conn->createStatement();

createStatement()函数可以带参数或不带参数,如果带参数的话,参数必须是一个SQL语句;如果没有带参数,则在后面必须用 Statement类下setSQL()函数为Statement对象赋一个SQL语句

8. 终止Statement对象

Conn->terminateStatement(stmt);

9. 执行SQL语句
stmt->execute(); 执行所有非特殊声明的SQL语句
stmt->executeUpdate(); 执行所有DDL和DML(一条记录)的SQL语句
stmt->executeQurey(); 执行所有查询SQL语句
stmt->executeArrayUpdate(); 执行多记录的DML的SQL语句

10. 执行非查询语句

//准备SQL语句
stmt->setSQL(string &sql);
//绑定输入参数值
stmt->setString(1, 'zhangsan'); 指把zhangsan赋值给第一个参数,参数类型为字符串型
stmt->setInt(2, 1009); 指把1009赋值给第二个参数,参数类型为整型
//执行
stmt->executeUpdate();

11. 执行查询语句

//同上
//执行
ResultSet *rs = stmt->executeQuery();
//定义输出变量
//处理数据
rs->next(unsignedint numRows); 其中numRows为批量处理的记录行数
stmt->getInt(paramindex); 获取整型参数值,其中paramindex为参数所在的位置
stmt->getString(paramindex); 获取字符型参数值其中paramindex为参数所在的位置

12. 事务提交
手动提交:

Connection::commit();
Connection::rollback();

自动提交:

Statement::setAutoCommit(TRUE);

13. 例子

#include <iostream>
#include <occi.h>
using namespace std;
using namespace oracle::occi;
int main()
{
   Environment *env=Environment::createEnvironment(Environment::DEFAULT);
   cout<<"success"<<endl;
   string name = "scott";
   string pass = "tiger";
   string srvName = "127.0.0.1:1522/orcl";
   try
   {
      Connection *conn = env->createConnection(name, pass, srvName);
      cout<<"conn success"<<endl;
      env->terminateConnection(conn);
   }
   catch(SQLException e)
   {
      cout<<e.what()<<endl;
       return -1;
   }
   Environment::terminateEnvironment(env);
   cout<<"end!"<<endl;

   return 0;
}

参考文档:
http://blog.sina.com.cn/s/blog_53a72add01015zj4.html

原文地址:https://www.cnblogs.com/zhangxuechao/p/11709905.html