工欲善其事,必先利其器。Oracle官方参考文档:Oracle Document。里面有各种文档,其中有两本是关于oci和occi的。
c语言《Oracle Call Interface Programmer's Guide》和c++语言《Oracle C++ Call Interface Programmer's Guide》。
2、vs2005 开发环境搭建本文只介绍OCCI开发环境的搭建,关于oci开发环境,基本等同。
下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html?ssSourceSiteId=ocomen
由于10.2版本的instant client没有支持vs2005的动态库,即使编译成功,运行时也会报各种奇奇怪怪的问题,所以选择支持vs2005的11.2.0.3.0版本。
搭建开发环境需下载两个文件:
解压2.1中下载的两个包。
OCCI项目的属性-》配置属性-》C/C++-》常规-》附加包含目录 中添加解压后的“instantclient_11_2sdkinclude”目录;
OCCI项目的属性-》配置属性-》连接器-》常规-》附加库目录 中添加解压后的“instantclient_11_2sdklibmsvcvc8”目录;
OCCI项目的属性-》配置属性-》连接器-》输入-》附加依赖项 中添加oraocci11.lib库。
将解压后的instantclient_11_2目录中的dll文件拷贝至编译的可执行文件目录。
3、搭建开发环境中遇到的问题 3.1、10.2版本的问题由于系统原本安装了10.2版本的Oracle client 。安装客户端时会自动安装oci开发库。原本想用10.2版本的库,哪知道这个版本不支持vs2005,编译能正常通过,可运行时就会报奇奇怪怪的错误。最后只好重新下载11.2的开发库。
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")
字符集配对了,就不会产生乱码。