oracle OCCI编程
2015-09-01 18:43
561 查看
1. 创建OCCI环境变量
Environment对象的建立必须放在第一位,而且也必须是最后一个被终止
2. 终止OCCI环境变量
3. 连接数据库
connectstingr是数据库的连接串 (192.168.60.84:1521/orcl)
4. 断开数据库
5. 创建连接池
数据库的连接必须要能被许多线程所使用,如果为每个线程都开一个数据库连接的话,当数量一大效率会明显的降低,所以我们通过创建连接池来处理这样的情况
poolUseName 是连接池的用户名
poolPassWord 是连接数据库的密码
connectstring 是数据库连接串
minConn 是最小连接数
maxConn 是最大连接数
incrConn 是指所有已连接数处于繁忙中且小于最大连接数时,每次增加的连接数
6. 断开连接池
7. 创建Statement对象
Statement类包含了执行SQL语句的所有方法,是对数据库操作的具体实现
createStatement()函数可以带参数或不带参数,如果带参数的话,参数必须是一个SQL语句;如果没有带参数,则在后面必须用 Statement类下setSQL()函数为Statement对象赋一个SQL语句
8. 终止Statement对象
9. 执行SQL语句
stmt->execute(); 执行所有非特殊声明的SQL语句
stmt->executeUpdate(); 执行所有DDL和DML(一条记录)的SQL语句
stmt->executeQurey(); 执行所有查询SQL语句
stmt->executeArrayUpdate(); 执行多记录的DML的SQL语句
10. 执行非查询语句
11. 执行查询语句
12. 事务提交
手动提交:
自动提交:
13. 例子
参考文档:
http://blog.sina.com.cn/s/blog_53a72add01015zj4.html
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
相关文章推荐
- ORACLE索引失效原因归纳[转]
- oracle 函数 WMSYS.WM_CONCAT 的用法 与 mysql 函数GROUP_CONCAT的用法
- 如何创建高效索引
- ORACLE:profile的管理
- oracle external table
- Linux系统下设置Oracle开机自动启动
- Oracle使用笔记(1)
- 问题:oracle long 与 clob;结果:long类型比clob到底差在什么地方?
- ORA-28002: 密码将在 7 天后到期
- Oracle数据块深入分析总结
- 问题:oracle 字符串转换成日期;结果:[oracle] to_date() 与 to_char() 日期和字符串转换
- Oracle dump函数的用法
- 问题:oracle CLOB类型;结果:oracle中Blob和Clob类型的区别
- oracle imp,exp使用详解
- oracle数据库的搭建(1)
- Oracle 监听器无法启动(TNS-12537,TNS-12560,TNS-00507)
- oracle同时执行saveOrUpdate的操作
- 用Oracle在线重定义把普通表改成分区表
- oracle10g logmnr 详细配置
- linux安装cx_oracle