Windows以及Linux下用OCCI访问Oracle数据库
来源:互联网 发布:非理性繁荣 知乎 编辑:程序博客网 时间:2024/05/17 18:49
一、Windows 下用OCCI连接Oracle数据库
1、说明
在Windows下用OCCI连接Oracle相对方便一些,因为Windows下对DLL的搜索相对灵活一些,可以很方便的加载Oracle OCCI的动态库。
2、文件准备
首先,理论上说,我们仅需要头文件、lib文件、dll文件即可正常访问数据库,实际也确实如此。实际开发时,数据库往往不在本机,而本机又没有安装Oracle数据客户端,此时仅需下载Oracle的 即时客户端(instant-client)即可。
下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html 下载相对应的版本即可。我这边下载的是 Instant Client for Microsoft Windows (32-bit) 下的 instantclient-basic-nt-12.1.0.2.0.zip 和 instantclient-sdk-nt-12.1.0.2.0.zip ,basic里边是动态链接库等,sdk里边包含头文件和lib文件。
下载之后,把这两个文件夹解压缩到C盘根目录即可。
3、建立工程
①这里为了方便,先介绍一种不需要配置各种环境变量的方法。
将如下文件或文件夹拷贝到你建立的工程根(如果是vs,则是xxx.vcxproj所在的目录)目录下
C:\instantclient_12_1\sdk\include 文件夹
C:\instantclient_12_1\sdk\lib 文件夹
C:\instantclient_12_1\vc10\oraocci12.dll 、oraocci12d.dll (这里要对应你的IDE版本,我使用的是VS2010,故拷贝vc10文件夹下的文件)
C:\instantclient_12_1\oraociei12.dll
C:\instantclient_12_1\oraons.dll
将include 和 lib 添加到相应工程目录中,编译调试如下代码
②既然有简单的,当然也会有相对麻烦一些的方法。那就是include和lib以及dll文件一个都不拷贝,添加ORACLE_HOME环境变量,值C:\instantclient_12_1,在工程中通过环境变量添加include、lib,同时要将 %ORACLE_HOME%\vc10\以及%ORACLE_HOME%添加进在PATH的末尾,用分号“;”分隔。
如果是第一次调试OCCI,还是建议你拷贝文件。环境变量改起来相对麻烦。
4、重点
这里重点介绍一下连接数据部分的细节。连接数据库方法createConnection有多种写法。常用的写法是:
createConnection(userName, password, connectString);
其中前两个参数不解释,connectString有两种写法。你可以写如下方式:
"//192.168.1.xx:1521/xxx" 其中 xxx 是数据库实例名
这种写法一般写好了就能调试运行。还有一种写法:
ORA10 这是tnsnames.ora中的描述串的名称,如下:
ORA10 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.10)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
该文件在目录 C:\instantclient_12_1\network\admin 下。如果没有,需要建立相应的文件夹和文件。有了这个文件,以及环境变量ORACLE_HOME,就可以将connectString写成“ORA10”了。OCCI会从%ORACLE_HOME%\network\admin\下找到.ora文件,然后根据ORA10去寻找相应的连接信息。这种方式略麻烦。
5、可能遇到的错误
32104、32101 :dll路径有问题或者没有拷贝完全。
TNS:protocol adapter error : 描述符文件有问题。用cmd执行 cd %ORACLE_HOME%\network\admin\ ,看打开的路径下是否有.ora文件。
二、Linux 下用OCCI连接Oracle数据库
Linux下使用与Windows下使用没有什么本质的区别,只是由于Linux对动态链接库(so文件)的查找方式与Windows不同,不能简单的将so文件放到执行目录下。可以参考文章:http://blog.csdn.net/cjqpker/article/details/41550527
我是这么做的
1、下载的文件是 instantclient-sdk-linux-12.1.0.2.0.zip 和 instantclient-basic-linux-12.1.0.2.0.zip,解压出的 instantclient_12_1文件夹如下放置:
/usr/lib/oracle/client/instantclient_12_1 然后切换到如上目录,建立文件链接(解决版本问题):
ln -s libocci.so.12.1 libocci.so
ln -s libclntsh.so.12.1 libclntsh.so
2、增加如下文件
/etc/ld.so.conf.d/ora.conf 文件内容只有一行: /usr/lib/oracle/client/instantclient_12_1/
控制台执行命令 ldconfig
3、用在Windows中使用的main.cpp参与编译连接:
g++ -o main main.cpp -I /usr/lib/oracle/client/instantclient_12_1/sdk/include -L/usr/lib/oracle/client/instantclient_12_1 -locci -lclntsh
解释: -o main 表示输出名称为 main
-I /usr/lib/oracle/client/instantclient_12_1/sdk/include 表示代码中的#include 语句可以从该目录中查找头文件
-L/usr/lib/oracle/client/instantclient_12_1 -locci -lclntsh 表示使用 libocci.so libclntsh.so 参与链接,文件从-L后边跟着的目录中寻找
4、如果编译成功,则可以运行其,查看结果。
5、注意点
如果执行这里边的步骤时报权限错误,那说明你不是用root用户登陆的。解决办法是 命令前加 sudo,回车后输入当前用户密码执行
0 0
- Windows以及Linux下用OCCI访问Oracle数据库
- Linux下用OCCI读取windows下的oracle数据库中文乱码解决
- 使用OCCI连接Linux下Oracle数据库
- Linux下OCCI操作Oracle数据库
- 使用OCCI连接Linux下Oracle数据库
- 使用OCCI连接Linux下Oracle数据库
- 使用OCCI连接Linux下Oracle数据库
- VS2010下访问oracle数据库的OCCI配置
- VS2010下访问oracle数据库的OCCI配置
- Linux下非Oracle数据库安装用户执行OCCI程序
- Linux下C连接Oracle数据库OCCI的若干问题
- Linux下C++连接oracle数据库 OCCI 接口
- 使用OCCI访问Oracle数据库(1)
- 使用OCCI访问Oracle数据库(2)
- 使用OCCI访问Oracle数据库(3)
- 使用OCCI访问Oracle数据库(4)
- oracle:unix(linux适用)环境下使用occi远程连接oracle数据库(新人教学版)---1
- oracle:unix(linux适用)环境下使用occi远程连接oracle数据库(新人教学版)---2
- sed中使用变量替换以及执行外部命令
- Android学习之 Intent几种使用方法使用
- 十二星座各自的性格分析,各种最
- Android中Context
- Zend_XmlRpc 使用实例(轻松实现对外接口)
- Windows以及Linux下用OCCI访问Oracle数据库
- spring3.0事务管理配置
- UML类图几种关系的总结
- 使用 HTML5 WebSocket 构建实时 Web 应用
- android 如何让主菜单的背景显示为壁纸
- 3Sum--leetcode
- dsafdasfds
- SVN 插件 IDE
- 认识DBA