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

oracle OCCI编程的更多相关文章

  1. 转:c++ Oracle OCCI 编程

    原地址http://blog.sina.com.cn/s/blog_53a72add01015zj4.html 找不到具体的出处,只好不写了. OCCI数据库ORACLE编程步骤1. 配置环境(1)  ...

  2. c++ Oracle OCCI 编程

    转载备忘:http://blog.sina.com.cn/s/blog_53a72add01015zj4.html 关于occi编程可以参考的链接: http://blog.itpub.net/162 ...

  3. OCCI编程接口介绍

    OCCI简介 Oracle® C++ Call Interface (OCCI) 是一套应用程序编程接口,它允许C++程序与一个或者多个Oracle数据库进行交互.OCCI给予你强大的数据库操作能力, ...

  4. Oracle OCCI学习之开篇

    官网:Oracle C++ Call Interface 一.OCCI介绍 Oracle C++ Call Interface(OCCI)是一个用于访问Oracle数据库的高性能且全面的API.基于标 ...

  5. ORACLE数据库编程

    第一章 Oracle数据库基本概念 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为 核心的一组软件产品,是目前最流行的客户/服务器(Client/Server, ...

  6. Oracle Proc编程性能优化经验

    Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...

  7. 高性能 Oracle JDBC 编程

    了解如何利用连接和语句池特性来提高 Oracle 驱动的 JDBC 程序的性能.作者:Yuli Vasiliev2009 年 4 月发布使用诸如连接池和语句池等池技术可以显著提高数据库密集型应用程序的 ...

  8. oracle 10g编程

    一.概述 1.sql语言特点 sql语言采用集合操作方式,对数据的处理是成组进行的,而不是一条一条处理,听过使用集合操作方式,可以家加快数据的处理速度. 执行sql语句时每次只能发送并处理一条语句.如 ...

  9. Oracle数据库编程:在JDBC中应用Oracle

    9.在JDBC中应用Oracle: JDBC访问数据库基本步骤:          1.加载驱动          2.获取链接对象          3.创建SQL语句          4.提交S ...

随机推荐

  1. Linux上用NAT实现上网

    1. 安装好Linux后,选择NAT方式 2. 在Windows主机上用ipconfig /all 查看VMnet8的IP地址,一般是192.168.X.1/255.255.255.0,如果不知道是哪 ...

  2. Python前言之编程语言

    编程语言分类(语言) ​ 编程语言是用来和计算机进行交互的,计算机只认识0和1. 机器语言(低级语言) 直接和硬件进行交互 用0和1和计算机进行沟通 缺点:开发效率低 优点:执行效率高 汇编语言 直接 ...

  3. CSS/H5保留显示 textarea输入的空格和换行

    .show { white-space: pre-wrap; }

  4. Apex 的 API 简介

    Salesforce 数据API分类 Salesforce中提供了四种数据API接口.数据API接口为开发者提供了操作Salesforce数据的能力.它们分别是: REST API:依据RESTful ...

  5. [LeetCode] 215. Kth Largest Element in an Array 数组中第k大的数字

    Find the kth largest element in an unsorted array. Note that it is the kth largest element in the so ...

  6. IDEA中SonarLint的安装与使用

    一.SonarLint插件的安装 1.1在线安装 (1)在IDEA菜单栏选择File->Settings,左边栏选择Plugins (2)在线安装选择Browse repositories,搜索 ...

  7. 问题查询-tomcat内存泄露

    1.报警信息 内容: 微信服务器向公众号推送消息或事件后,开发者5秒内没有返回 次数: 5分钟 239次 错误样例: [OpenID=o][Stamp=1562718361][3rdUrl=url][ ...

  8. Spring 源码分析之AbstractApplicationContext源码分析

    首先我觉得分析ApplicationContext必须从它的实现类开始进行分析,AbstractApplicationContext我觉得是一个不错的选择,那我们就从这里开始逐一分析吧,首先我自己手画 ...

  9. HTML连载28-标签的权重

    一.什么是优先级的权重 1.作用:当多个选择器混合在一起的时候,我们可以通过计算权重来判断谁的优先级最高. 2.权重的计算规则 公共代码: <body> <div id=" ...

  10. Zookeeper在linux上的安装

    1:进入 cd  /usr/local目录下 2:创建zookeeper目录  midir zookeeper 3:将压缩包复制到zookeeper目录下  cp /root/zookeeper/zo ...