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
oracle OCCI编程的更多相关文章
- 转:c++ Oracle OCCI 编程
原地址http://blog.sina.com.cn/s/blog_53a72add01015zj4.html 找不到具体的出处,只好不写了. OCCI数据库ORACLE编程步骤1. 配置环境(1) ...
- c++ Oracle OCCI 编程
转载备忘:http://blog.sina.com.cn/s/blog_53a72add01015zj4.html 关于occi编程可以参考的链接: http://blog.itpub.net/162 ...
- OCCI编程接口介绍
OCCI简介 Oracle® C++ Call Interface (OCCI) 是一套应用程序编程接口,它允许C++程序与一个或者多个Oracle数据库进行交互.OCCI给予你强大的数据库操作能力, ...
- Oracle OCCI学习之开篇
官网:Oracle C++ Call Interface 一.OCCI介绍 Oracle C++ Call Interface(OCCI)是一个用于访问Oracle数据库的高性能且全面的API.基于标 ...
- ORACLE数据库编程
第一章 Oracle数据库基本概念 一.介绍 Oracle数据库系统是美国Oracle(甲骨文)公司提供的以分布式数据库为 核心的一组软件产品,是目前最流行的客户/服务器(Client/Server, ...
- Oracle Proc编程性能优化经验
Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...
- 高性能 Oracle JDBC 编程
了解如何利用连接和语句池特性来提高 Oracle 驱动的 JDBC 程序的性能.作者:Yuli Vasiliev2009 年 4 月发布使用诸如连接池和语句池等池技术可以显著提高数据库密集型应用程序的 ...
- oracle 10g编程
一.概述 1.sql语言特点 sql语言采用集合操作方式,对数据的处理是成组进行的,而不是一条一条处理,听过使用集合操作方式,可以家加快数据的处理速度. 执行sql语句时每次只能发送并处理一条语句.如 ...
- Oracle数据库编程:在JDBC中应用Oracle
9.在JDBC中应用Oracle: JDBC访问数据库基本步骤: 1.加载驱动 2.获取链接对象 3.创建SQL语句 4.提交S ...
随机推荐
- 接口八问 & 接口测试质量评估标准
接口八问 关于接口的具体信息,可以通过以下八个问题进行了解: 接口的请求地址? 接口的作用? 接口的请求方式? 接口是否是用户相关? 接口是否存在上送数据,上送数据是什么? 接口返回的报文头和编码? ...
- 20180711模拟赛T3——聚变
文件名: fusion 题目类型: 传统题 时间限制: 3秒 内存限制: 256MB 编译优化: 无 题目描述 知名科学家小A在2118年在计算机上实现了模拟聚变的过程. 我们将她研究的过程简化. 核 ...
- maven介绍(一)
一.什么是maven Maven 翻译过来就是专家,其官网为: http://maven.apache.org/ Maven使用POM (Project Object Model)项目对象模型,就是通 ...
- Vue之挂载点、变量、事件、js对象、文本指令、过滤器、事件指令和属性指令
1.vue导入-挂载点 <!DOCTYPE html> <html lang="zh"> <head> <meta charset=&qu ...
- LeetCode 51. N-QueensN皇后 (C++)(八皇后问题)
题目: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two que ...
- navicat密码错误的问题
上集说到我的navicat打不开对吧..‘ 这下就来聊聊打开了的问题 下午非常开心,就打开了mysql的图形化界面, 但是,在我连接数据库的时候就报错了 错误就是密码错误那行 什么什么‘localho ...
- 11/2 下午 <String>
344. Reverse String 解法一(暴力法): 直接从两头往中间走,同时交换两边的字符即可 首位对调位置. class Solution { public void reverseStri ...
- 【树论】FBI树
原题传送门 思路 讲这道题之前,先讲一个黑科技一般的函数:basic_string::substr(int x,int y). 这是一个string类的成员函数,它返回一个新的string对象,该对象 ...
- 工作中常用的Linux命令介绍与实践
前言 做后端开发的同学,一般都会接触到服务器,而我们现在的系统用的比较多的服务器系统就是linux了,平时多多少少也会接触到一些linux下的shell命令.我们来介绍下linux一些常用的命令和使用 ...
- k8s之系统组件架构-02
k8s系统架构图 网络组件:calico+kube-proxy(IPVS) 网络暴露:traefik+ingress,分别对HTTP与TCP的服务暴露 存储:glusterfs(heketi管理) 日 ...