Chinaunix首页 | 论坛 | 博客
  • 博客访问: 528452
  • 博文数量: 55
  • 博客积分: 1520
  • 博客等级: 上尉
  • 技术积分: 661
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-19 22:01
文章存档

2013年(1)

2012年(1)

2011年(7)

2010年(16)

2009年(30)

我的朋友

分类: LINUX

2010-09-20 16:31:15

所需软件包如下:
instantclient-basic-linux32-11.2.0.2.0.zip
instantclient-sdk-linux32-11.2.0.2.0.zip

安装:
1. 将以上两个文件解压到/opt文件夹下:
unzip instantclient-basic-linux32-11.2.0.2.0.zip
unzip instantclient-sdk-linux32-11.2.0.2.0.zip
mv instantclient_11_2 /opt/
cd /opt/instantclient_11_2/
(做两个必须的链接)
ln -s libocci.so.11.1 libocci.so
ln -s libclntsh.so.11.1 libclntsh.so

2. 添加环境变量
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/instantclient_11_2
export LD_LIBRARY_PATH
CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/opt/instantclient_11_2/sdk/include
export CPLUS_INCLUDE_PATH
TNS_ADMIN=/opt/instantclient_11_2
export TNS_ADMIN

3. 在/opt/instantclient_11_2下添加tnsnames.ora文件,内容如下:
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.110)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
(以上内容不详细说明,具体可参见oracle文档)

4. 编写程序测试一下:
//code
#include
#include
#include

void DisplayAllRows(oracle::occi::Connection* conn)
{
  std::string sqlStmt = "SELECT USER_ID, NAME FROM IM_USER";
  oracle::occi::Statement *stmt;
  oracle::occi::ResultSet *rset;
  stmt = conn->createStatement( sqlStmt );
  try {
    rset = stmt->executeQuery();
    while ( rset->next() ) {
      std::cout
          << "USER_ID: " << rset->getString(1) << "    "
          << "NAME: "    << rset->getString(2) << std::endl;
    }
  } catch(oracle::occi::SQLException ex) {
    std::cout << "Exception thrown for displayAllRows" << std::endl;
    std::cout << "Error number: " <<  ex.getErrorCode() << std::endl;
    std::cout << ex.getMessage() << std::endl;
  }

  stmt->closeResultSet(rset);
  conn->terminateStatement(stmt);
}

int
main(int argc, char **argv)
{
  oracle::occi::Environment *env;
  oracle::occi::Connection *conn;

  std::string user = "im";
  std::string passwd = "123456";
  std::string connect_string = "XE";  //与tnsnames文件中的名字一致

  try {
    env = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::DEFAULT);
    conn = env->createConnection(user, passwd, connect_string);

    DisplayAllRows(conn);

    env->terminateConnection(conn);
    oracle::occi::Environment::terminateEnvironment(env);
  } catch (oracle::occi::SQLException ea) {
    std::cout << "Error: " << ea.getMessage() << std::endl;
  }

  return 0;
}

编译:
g++ -o occi_dml occi_dml.cc -L/opt/instantclient_11_2 -locci -lclntsh
如果没报错的话,就恭喜你了,哈哈.......
阅读(5196) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~