日期:2014-05-16  浏览次数:20626 次

OCCI开发环境搭建

1、参考文档

工欲善其事,必先利其器。oracle官方参考文档:Oracle Document。里面有各种文档,其中有两本是关于oci和occi的。

c语言《Oracle Call Interface Programmer's Guide》和c++语言《Oracle C++ Call Interface Programmer's Guide》。

2、vs2005 开发环境搭建

本文只介绍OCCI开发环境的搭建,关于oci开发环境,基本等同。

2.1、下载库和头文件

下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html?ssSourceSiteId=ocomen

由于10.2版本的instant client没有支持vs2005的动态库,即使编译成功,运行时也会报各种奇奇怪怪的问题,所以选择支持vs2005的11.2.0.3.0版本。

搭建开发环境需下载两个文件:

  1. instantclient-basic-nt-11.2.0.3.0.zip。这个包包含运行OCCI程序的动态链接库。
  2. instantclient-sdk-nt-11.2.0.3.0.zip。这个包包含开发库的头文件、静态链接库以及occi示例程序。

2.2、配置

解压2.1中下载的两个包。

OCCI项目的属性-》配置属性-》C/C++-》常规-》附加包含目录 中添加解压后的“instantclient_11_2\sdk\include”目录;

OCCI项目的属性-》配置属性-》连接器-》常规-》附加库目录 中添加解压后的“instantclient_11_2\sdk\lib\msvc\vc8”目录;

OCCI项目的属性-》配置属性-》连接器-》输入-》附加依赖项 中添加oraocci11.lib库。

将解压后的instantclient_11_2目录中的dll文件拷贝至编译的可执行文件目录。

3、搭建开发环境中遇到的问题

3.1、10.2版本的问题

由于系统原本安装了10.2版本的Oracle client 。安装客户端时会自动安装oci开发库。原本想用10.2版本的库,哪知道这个版本不支持vs2005,编译能正常通过,可运行时就会报奇奇怪怪的错误。最后只好重新下载11.2的开发库。

oracle随后发布的补丁里添加对vs2005的支持,如果想使用10.2版本客户端的oci开发库或使用10.2版本instant client开发库,需要安装如下的补丁:

occivc8win32-102030-ps13-133884.zip

3.2、linux开发环境的搭建

linux环境搭建和vs2005开发环境搭建差不多。由于linxu上没有安装oracle数据库和客户端,因此没有什么干扰。直接在ldconf中添加了动态链接库目录,这样就不用把动态链接库拷贝到可执行程序目录了。当然在win32开发环境中,如果不想拷贝动态链接库,你也可以在环境变量PATH中进行设置。

3.3、关于demo

对于下载包中的demo,不要指望直接编译就能运行。你需要根据自己的系统修改demo.mk文件。

3.4、中文乱码问题

如果你在查询中文显示乱码,极有可能是字符集问题。

使用sqlplus查询:

SQL>select userenv('language') from dual;

查询到服务端的字符集设置是SIMPLIFIED CHINESE_CHINA.ZHS16GBK

创建环境变量函数里可以直接指定字符集,于是如下创建环境变量:

env = Environment::createEnvironment ("ZHS16GBK","ZHS16GBK")

字符集配对了,就不会产生乱码。

3.5、debug版本的问题

11.2版本的instant client没有vs2005的debug库,官方文档说安装数据库时会提供vs2005的debug库。没有试,需要的童鞋自己试试吧。11.2版本的补丁只有vs2008的debug库。

还好10.2版本的补丁有debug库。