VC++环境设置

1加include files项:%ORACLE_HOME%\oci\include

%ORACLE_HOME% = HKEY_LOCALMACHINE_SOFTWARE\SOFTWARE\ORACLE\KEY_OraDb10g_home 注册表键

2、加library file

项:%ORACLE_HOME%\oci\lib\msvc\vc6  %ORACLE_HOME%\oci\lib

3、加lib文件oraocci10.lib (VS10的链表-强制依赖项)

4、在preprocessor definitions 下面去掉_DEBUG宏,加入WIN32COMMON _DLL

_MT  3个宏;或在#include <occi.h>前面加以下代码

#inndef WIN32COMMON

#define WIN32COMMON

#endif

#inndef _DLL

#define _DLL

#endif

#inndef _MT

#define _MT

#endif

5、在project options 里将MLd去掉d,去掉/GZ。

或者在build->set active configouration 打开set active project configouration对话

框,选择win32 release。

使用方法:

#include <occi.h>

using namespace oracle::occi;

环境变量Environment

Environment *env;

Env=Environment::creatEnvironment(Enviroment::DEFAULT);

Environment::terminateEnvironment(env);

连接对象:Connection

Connection *conn;

Conn=env->createConnection(user,passwd,db);

Env->terminateConnection(conn);

普通连接池:

ConnectionPool *connPool;

connPool=env->creatConnectionPool(poolusername,poolpasswd,connectstring,minco

nn,maxconn,incrconn);

普通连接:

con=connPool->createConnection(username,password);

代理连接:

ConectionPool->createProxyConnection(

Const string &username,

Connetion::ProxyType proxtType=Connection::PROXY_DEFAULT);

或者

ConnectionPool->createProxyConnection(

Const string &username,

String roles[],

Int numRoles,

Connection::ProxyType proxyType=Connection::PROXY_DEFAULT);

无状态连接池:(连接池用完后可自动增加)

StatlessConnectionPool *spool=

Enviroment::CreatStatlessConnectionPool(username,passwd,connectstring,maxco

nn,minconn,incrconn,HOMOGENOUS);

Connection *conn=spool->getConnection();//获取连接对象

spool->releaseConnection(conn,”CN”);//释放连接,同时标记

env->terminateConnectionPool(spool); //销毁连接池

statement对象:

1、标准

String sqlstmt = “SELECT author_id,author_name FROM author_tab order by

author_id;//occi数据类型

stmt=conn->createStatement(sqlstmt); //创建标准类型

ResultSet *rset=stmt->executeQuery(); //返回结果

Cout<<rset->getInt(1)<<rset->getSting(2); //第1、2列

Stmt->closeResultSet(rset);  //关闭

Conn->terminateStatement(stmt); //关闭

执行SQL语句时可执行以下函数:

execute():一般SQL语句,create\insert

executeUpdate():执行DDL\DML语句

executeArrayUpdate():复杂的SQL语句

executeQuery():查询

setSQL()

getSQL():获取当前执行的SQL语句

SQLException ex:捕捉发生错误的异常;ex.getErrorCode()  ex.getMessage()

2、带参数

Void insertBind(int c1,string c2)

{

String sqlStmt=”INSERT INTO author_tab VALUES(:x,:y);

Stmt=conn->createStatement(sqlStmt);  try{

stmt->setInt(1,c1); stmt->setString(2,c2);stmt->executeUpdate();

}catch(SQLException ex)

{cout<<ex.getErrorCode()<<ex.getMessage();}

Conn->terminateStatement;

}

3、带存储过程的

A:调用过程:

Statement *stmt=con->createStatement(“BEGIN demo_proc(:v1,:v2,:v3)

END;”);//3参数

Cout<<stmt->getSQL();

stmt->setInt(1,10); stmt->setMaxParamSize(2,30); stmt->String(2,”IN”);

stmt->registerOutParam(3,OCCISTRING,30,””);

int updateCount= stmt->executeUpdate();

B:调用函数:

Statement *stmt=con->createStatement(“BEGIN:a:=demo_proc(:v1,:v2,:v3)

END;”);//4参数

Cout<<stmt->getSQL();

stmt->setInt(2,10); stmt->setMaxParamSize(3,30); stmt->String(2,”IN”);

stmt->registerOutParam(1,OCCISTRING,30,””);

stmt->registerOutParam(4,OCCISTRING,30,””);

int updateCount= stmt->executeUpdate();

批量编辑数据

Statement *stmt=conn->createStatement(“INSERT INTO emp(empno,ename) VALUES(:1,:2)”);

stmt->setMaxIteration(10); //指定最多有多少个记录时执行executeUpdate

stmt->setMaxParamSize(2,100);  //指定最大的数据缓冲区

stmt->setInt(1,10001); stmt->setString(2,”john”); stmt->setIteartion();//加入缓冲区

stmt->executeUpdate();

操作流数据(getStream(),writeBuffer(),writeLastBuffer(),readBuffer(),

readLastBuffer())

数据类型BLOB、CLOB、LONG、LONG RAW 、RAW 、VARCHAR2的数据

为流数据

Statement *stmt=conn->creatStatement(“INSERT INTO testtab(longeo1) VALUES(:1)”);

stmt->setCharacterStreamMode(1,10000); stmt->executeUpdate();

Stream *instream= stmt->getStream(1); char buffer[10000];

instream->writeBuffer(buffer,len);instream->writeLastBuffer(buffer,len);

stmt->closeStream(instream);

事务的提交与回滚 Connection::commit();Connection::rollback()

自动提交Statement::setAutoCommit(TRUE/FALSE);

Statement对象的缓冲区:

1、连接对象的缓冲区:

conn->setStmtCacheSize(10);  int csize=conn->getStmtSize();

conn->terminateStatemen(stme); stmt->disableCaching();

2、连接池缓冲区:

conPool->setStmtCacheSize();

Metadata对象:查看数据库对象的属性与元数据

MetaData md=conn->getMetadata(“emp”,PTYPE_UNK);//建立对象

int objectType=md.getInt(Metadata::ATTY_OBJ_PTYPE);//对象类型

int columnCount=md.getInt(Metadata:ATTR_OBJ_NUM_COLS);//对象的字段数

Timestamp objts=md.getTimestamp(Metedata::ATTR_OBJ_TIMESTAMP);//时区

vector<MetaData>cols=md.getVector(Metadata::ATTR_LIST_COLUMS);//返回集

合对象

cols[0].getString(Metedata::ATTR_NAME);//第一个字段名

cols[0].getInt(Metedata::ATTR_DATA_TYPE);//第一个字段类型

Statement *stmt =conn->creatStatement(“select * from emo”);

ResultSet *rs=stmt->executeQuery();

Vector(MeteData) selectcols=rs->getColumnListMetaData();

int columnCount=selectcols.size();

for(int i=0;i<columnCount;i==)

{

cout<<selectcols[i].getString(MetaData::ATTR_NAME);

cout<<selectcols[i].getInt(MetaData::ATTR_DATA_TYPE);

}

VC使用OCCI开发的简介相关推荐

  1. Windows驱动开发书籍简介

    分享到 一键分享 QQ空间 新浪微博 百度搜藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友 和讯微博 更多... 百度分享 首页 我的主页 相册 广 ...

  2. 视频教程-VC#.NET+GDI+开发交互式CAD系统-C#

    VC#.NET+GDI+开发交互式CAD系统 图书作者,代码从业者,N多年 苏金明 ¥799.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠, ...

  3. HealthKit开发快速入门教程之HealthKit开发概述简介

    HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为&qu ...

  4. 100个vc小项目开发:二、一步一点设计音乐播放器 [I]

    100个vc小项目开发:二.一步一点设计音乐播放器 [源码解读] 文章作者: July 软件来源:开源 ================== 1.有不正之处,恳请指正. 2.本文贴出的是关键实现代码部 ...

  5. 图解VC#版DirectX开发教程二 - 摄像机

    用VC#进行DirectX开发,程序结构大体都是一样的. 上一篇博文,VC#版DirectX开发入门详解 http://blog.csdn.net/bcbobo21cn/article/details ...

  6. HighNewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具

    High&NewTech:低代码(0代码/无代码,无需代码)开发的简介以及如何选择最合适的低代码开发工具 导读:在互联网时代,博主经常反思一个问题,如何跟进这个快速发展的时代才能不会被淘汰?博 ...

  7. BigData:大数据开发的简介、核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS、HBase、Hive}+Docker)、经典场景应用之详细攻略

    BigData:大数据开发的简介.核心知识(linux基础+Java/Python编程语言+Hadoop{HDFS.HBase.Hive}+Docker).经典场景应用之详细攻略 BigData:大数 ...

  8. VC用MFC开发的圆形进度条控件

    DownLoad Src VC用MFC开发的圆形进度条控件 visualsan@yahoo.cn NUAA zss 在NBA2007游戏里,还有很多科幻电影里,经常可以看到圆形进度条.有的用来显示导弹 ...

  9. Enterprise Library 5.0 开发向导- 简介(1)

    Enterprise Library 5.0 开发向导- 简介(1) 微软企业库 Enterprise Library 5.0 正式发布!!! 在基于微软.NET 框架开发的应用程序中,无论是企业级的 ...

最新文章

  1. 关于libStagefright系列漏洞分析
  2. python templates_详解Python的Django框架中的templates设置
  3. 吴恩达深度学习 —— 3.6 激活函数
  4. jira7.3.6的安装步骤
  5. 学python编程_程序员学Python编程或许不知的十大提升工具
  6. 计算机会计学ufo报表,UFO报表管理实验报告.doc
  7. ArcGIS矢量数据重分类
  8. 区块链入门教程——什么是区块链?
  9. python将PDF文件转换为图片
  10. 2022年上半年信息系统项目管理师下午案例分析真题及答案解析
  11. syn包发送(拒绝攻击,但是有问题)
  12. python爬取b站弹幕分析_Python爬取分析B站动漫《柯南》弹幕,从数据中分析接下来的剧情...
  13. JAVA内存区域划分
  14. 微软ad域服务器 管理用户,威联通NAS助企业解决Windows AD域账户管理
  15. 成长的思考:如何在工作中保持高速的自我成长
  16. Selenium Chrome设置代理之后验证依旧是本机ip原因
  17. System Verilog的基本数据类型
  18. Android 各版本 设置 USB 默认连接 MTP 模式 ( Android 6.0+ )
  19. android系统怎么取消,安卓系统hd怎么关闭
  20. python-外部程序的调用os库、subprocess 模块

热门文章

  1. 工具-360安全卫士,打开ARP防火墙(解决问题:访问疑似夹带攻击行为)
  2. SpringBoot微服务部署
  3. Android登录页面设计
  4. VMware 虚拟机与主机网络互通
  5. 顾小清:教育信息化进入数字化转型重要时期
  6. java udp nio_Java NIO系列教程(十) Java NIO DatagramChannel
  7. 用几行python代码获取Yahoo,tushare股票数据,超级爽!!(比爬网好太多)
  8. 误删电脑文件怎么恢复
  9. ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发
  10. 移动硬盘和u盘连接计算机,电脑文件自动复制到U盘或移动硬盘,当它们插入电脑时...