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