前提是已经安装好Oracle 9i。

1. 下载对应的ORACLE client安装。

http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html

因为没有9i的client提供下载了,我选择最接近的版本下载:

Version 10.1.0.5
Instant Client Package - Basic: All files required to run OCI, OCCI, and JDBC-OCI applications
Download instantclient-basic-linux32-10.1.0.5-20060511.zip (31,413,713 bytes) (cksum - 384697539)

下载之后解压。

2. 先把示例代码给出来:

//oci.cpp
#include <iostream>
#include <string>
#include <occi.h>
using namespace std;
using namespace oracle::occi; int main()
{
Connection *conn;
Environment *env;
Statement *stmt; //build a connection
string struser("scott");
string strpwd("tiger");
string strconn_string("");
cout << "" << endl; env = Environment::createEnvironment(Environment::OBJECT);
cout << "" << endl; conn = env->createConnection(struser, strpwd, strconn_string);
cout << "" << endl; if( NULL != conn)
cout << "conn success" << endl;
else
cout << "conn failed" << endl; //execute sql statement
string strsql("select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual");
stmt = conn->createStatement(strsql);
ResultSet *rset = stmt->executeQuery(); while(rset->next())
{
string time = rset->getString();
cout << "now time:" << time << endl;
} //close resourses
stmt->closeResultSet(rset);
conn->terminateStatement(stmt);
env->terminateConnection(conn);
Environment::terminateEnvironment(env); return ;
}

3. 编译

这里对g++的版本有要求,如果是g++ 3.x.x的,可能会爆出如下错误:

undefined reference to `oracle::occi::Environment::createEnvironment(orac le::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'

网上很多讨论这个错误的,解决办法是安装低版本的g++。


资料(可以不看):解决方案的出处:http://www.dbforums.com/showthread.php?1619980-Makefile-problem-for-OCCI-on-Oracle-9i

If you're getting the following error messages:

undefined reference to `oracle:occi::Environment::createEnvironment(oracle:occi::Environment::Mode, void*, void* (*)(void*, unsigned), void* (*)(void*, void*, unsigned), void (*)(void*, void*))'

and

undefined reference to `oracle:occi::Environment::terminateEnvironment(oracle:occi::Environment*)'

then you're probably running oracle9i on redhat 8.0. to solve this, download and install the following rpm's from this redhat link:

* compat-gcc-7.3-2.96.118.i386.rpm
* compat-gcc-c++-7.3-2.96.118.i386.rpm
* compat-libstdc++-7.3-2.96.118.i386.rpm
* compat-libstdc++-devel-7.3-2.96.118.i386.rpm

and compile with g++296 instead of g++. sure you'll be stuck with g++-2.96, but at least it will compile and run.


在谷歌搜索如下4个rpm包安装:

* compat-gcc-7.3-2.96.118.i386.rpm
* compat-libstdc++-7.3-2.96.118.i386.rpm
* compat-libstdc++-devel-7.3-2.96.118.i386.rpm 
* compat-gcc-c++-7.3-2.96.118.i386.rpm

请按照安装上述顺序安装rpm包,因为最后一个依赖于第一二三个。

如果安装的时候报错说“正在安装的g++与系统上存在的g++有冲突”,在rpm后加上-aid --force参数,如下:

sudo rpm -ivh xxx.rpm -aid --force

详情可见这篇文:http://www.cnblogs.com/duanguyuan/p/4118210.html

安装好此版本的g++后,就可以用以下命令编译了:

 g++ -o oci -I /opt/oracle/product/rdbms/public/ -I /opt/oracle/product/rdbms/demo/ -I /home/oracle/instantclient10_1/ -L /opt/oracle/product/lib/ -L /opt/oracle/product/rdbms/lib/ oci.cpp -lclntsh -locci /usr/lib/libstdc++.so. -Wall -O -g

注意仔细看上边所包含的编译目录,先看看自己的$ORACLE_HOME在哪里,看看上述的目录都在不在。其中instantclient10_1目录便是第一步下载的Oracle client。

4. 运行

结果如下图

其他参考:

http://blog.csdn.net/gyanp/article/details/6107044

http://oradim.blogspot.com/2009/08/getting-started-with-occi-linux-version.html

Red Hat Enterprise Linux AS4, C++ OCCI connect Oracle 9i的更多相关文章

  1. Red Hat Enterprise Linux 7.4上安装Oracle 11.2.0.4

    1. 配置Yum源及关闭SeLinux [root@localhost ~]# mkdir /media/rhel [root@localhost ~]# mount /dev/cdrom /medi ...

  2. Deploy Oracle 10.2.0.5 DataGuard on Red Hat Enterprise Linux 6.4

    系统:Red Hat Enterprise Linux 6.4 数据库:Oracle 10.2.0.5.0 Patch Set 4 主机:10dg1 192.168.1.91 10dg2192.168 ...

  3. setting up a IPSEC/L2TP vpn on CentOS 6 or Red Hat Enterprise Linux 6 or Scientific Linux

    This is a guide on setting up a IPSEC/L2TP vpn on CentOS 6 or Red Hat Enterprise Linux 6 or Scientif ...

  4. SQL Server on Red Hat Enterprise Linux——RHEL上的SQL Server(全截图)

    本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创 ...

  5. Configure Always On Availability Group for SQL Server on RHEL——Red Hat Enterprise Linux上配置SQL Server Always On Availability Group

    下面简单介绍一下如何在Red Hat Enterprise Linux上一步一步创建一个SQL Server AG(Always On Availability Group),以及配置过程中遇到的坑的 ...

  6. SQL Server on Red Hat Enterprise Linux

    本文从零开始一步一步介绍如何在Red Hat Enterprise Linux上搭建SQL Server 2017,包括安装系统.安装SQL等相关步骤和方法(仅供测试学习之用,基础篇). 一.   创 ...

  7. Red Hat Enterprise Linux 6.6安装体验

    Red Hat Enterprise Linux 6.6的安装首界面有五个选项,这跟以前的Red Hat Enterprise Linux 5.x的安装界面是有一些区别的.   安装或者升级现有系统( ...

  8. Red Hat Enterprise Linux 各个版本以及发布日期

    Red Hat Enterprise Linux 7 Release/Update General Availability Date redhat-release Errata Date* Kern ...

  9. 如何安装win10+Red Hat Enterprise Linux双系统?

    1,如何安装win10+Red Hat Enterprise Linux双系统???? 有很多人(没做过调查,可能就我自己想装吧)想要安装Red Hat Enterprise Linux系统,但是又不 ...

随机推荐

  1. sublime实现背景透明化

    预览 老司机们就不要吐槽背景图了 实现方法 首先下载插件,直接打包下载zip即可 地址:https://github.com/vhanla/SublimeTextTrans 下载完成后解压到packa ...

  2. 推荐一款好用的office转换PDF工具

    北京博信施科技有限公司是一家专业从事数据格式转换.数据处理领域研发软件产品和解决方案实施的技术型公司.在当今信息时代,PDF文档格式是在Internet上进行电子文档发行和数字化信息传播的理想文档格式 ...

  3. Approval Process 在 Apex 中的使用

    Approval Process(批准过程)简介 批准过程是一个复杂的业务过程.详细的内容可以参考官方文档. 英文版 中文版 官方trailhead模块 在Apex中调用Approval Proces ...

  4. OpenCL的buffer以及sub-buffer

    buffer,sub-buffer和image对比 相同点:都是OCL memory对象 维度 特性关键词 buffer 一维 array of bytes sub-buffer 一维 views i ...

  5. 单元测试_JUnit常用单元测试注解介绍及代码演示

    JUnit常用单元测试注解介绍及代码演示   by:授客 QQ:1033553122 1. 测试环境 1 2. 基础概念 1 3. 常用Annotation 1 4. 运行环境配置 3 maven配置 ...

  6. 关于JPasswordField的getText()方法过时问题解决

    这几天想做一个登陆界面,用Jframe做,连接数据库时发现JPasswordField的getText()过时了,没法使用.查了资料发现改成了: try{ String sql="SELEC ...

  7. 数据库CRUD操作以及MyBatis的配置使用

    • 业务字段设计 • 数据库创建 • CRUD操作 • MyBatis集成 • 注解和XML定义 • ViewObject和DateTool • 首页开发     • 业务字段设计 实体: name: ...

  8. Windows使用MongoDB,以及索引创建

    安装MongoDB https://www.mongodb.com/download-center#community 点击msi安装程序进行安装,可以进行自定义安装,选择安装位置,我选择的是D盘 在 ...

  9. MongoDB的搭建并配置主从以及读写分离

    1.环境准备  1.Centos7 2.mongodb3.4.93.三台机器IP分别是:10.170.1.16.10.170.1.18.10.170.1.33 2.mongdb数据库的安装 如下操作是 ...

  10. 通过ip查询自己电脑的共享文件夹

    查看电脑所有的共享文件或文件夹的三种方法如下: 方法一. 右键点击网上邻居,点击属性进入网上邻居属性页面. 选中本地连接,在窗口的左下方有详细信息,可以看到内网IP,记住IP地址. 直接在地址栏输入记 ...