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. 虚拟机使用配置固定IP

    首先打开虚拟机 打开xshell5连接虚拟机(比较方便,这里默认设置过Linux的ip,只是不固定) 输入ifconfig,可以查看网管相关配置信息: 然后输入    vi /etc/sysconfi ...

  2. 【Spark】

    spark-submit --class "org.apache.spark.examples.sql.JavaSparkSQLExample" --master local co ...

  3. java.util.Base64

    Base64 简单使用 java.util.Base64 package com.mozq.sb.jwt01.config; import java.nio.charset.Charset; impo ...

  4. web框架--XSS攻击和CSRF请求伪造

    XSS 跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web ...

  5. 动态规划 | DAG最长路

    1.矩形嵌套 查了很久的错,最后发现是ans在每次测试样例输入的时候没有初始化为0 . AC代码: #include <stdio.h> #include <memory.h> ...

  6. X509证书 指定了无效的提供程序类型 System.Security.Cryptography.CryptographicException 错误解决方法

    第一种解决办法: IIS 应用程序池--选中你网站的所配置的应用程序池--右键 选择 “高级配置” --将“加载用户配置文件” 设置为True 第二种解决办法: 在加载证书方法时使用以下方法,请注意第 ...

  7. Salesforce 开发整理(十)项目部署总结

    项目部署顺序 全局值集 小组 自定义字段-对象-设置(SF1 紧凑布局要和记录类型在这里要一起部署) 邮件模板-静态资源 角色 工作流-流定义(包含进程生成器) 批准过程 开发部署<Apex类, ...

  8. oracle-报错 RMAN-03002,RMAN-06172

    RMAN> restore standby controlfile from "/data/oracle/contral.ctl"; Starting restore at ...

  9. python前后台tcp/udp通讯示例

    以下代码兼容python2.7+.python3 TCP示例 服务器 -- sever_tcp.py #!/usr/bin/env python #coding=utf-8 import time i ...

  10. Java连载9-数据类型&字符编码

    一.数据类型注意:(1)计算机最初只支持英文,最先出现的字符编码是:ASII码例如:‘a'对应97,对应01100001(2)编码和解码的时候采用同一套字典/对照表,不会出现乱码.否则会出现乱码.二. ...