将C ++程序与Oracle连接 [英] Connecting c++ program with Oracle

查看:514
本文介绍了将C ++程序与Oracle连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将我的C ++程序连接到Oracle数据库(12.2)。

我的C ++程序是(我在ubuntu中使用g ++编译器),

p>

  #include< occi.h> 
#include< iostream>

使用namespace std;

int main()
{oracle :: occi :: Environment * env = oracle :: occi :: Environment :: createEnvironment();
oracle :: occi :: Connection * conn = env-> createConnection(bsk,oraclepass);
env-> terminateConnection(conn);
oracle :: occi :: Environment :: terminateEnvironment(env);
}

我收到错误

 对oracle :: occi :: Environment :: createEnvironment的未定义引用(oracle :: occi :: Environment :: Mode,void *,void *(*)(void *,unsigned long),void *(*)(void *,void *,unsigned long),void(*)(void *,void *))'
Employees.cpp :(。text + 0x169):未定义对`oracle :: occi :: Environment :: terminateEnvironment(oracle :: occi :: Environment *)的引用'
collect2:错误:ld返回1退出状态

我是数据库连接的新手。
您可以帮我解决这个问题吗? 解决方案

From Oracle的网站,这里是一个有效的例子:

  const string userName =HR; 
const string password =password;
const string connectString =;

Environment * env = Environment :: createEnvironment();

{
Connection * conn = env-> createConnection(userName,password,connectString);
语句* stmt = conn-> createStatement(SELECT blobcol FROM mytable);
ResultSet * rs = stmt-> executeQuery();
rs-> next();
Blob b = rs-> getBlob(1);
cout<< BLOB的长度:<< b.length个();
...
stmt-> closeResultSet(rs);
conn-> terminateStatement(stmt);
env-> terminateConnection(conn);
}

Environment :: terminateEnvironment(env);

您的代码似乎朝着正确的方向发展。所以,似乎有些图书馆已经失踪了!



同样,从


  • 在Oracle网站上的不同页面,以下是所需的库: > OCI即时客户端数据共享库(Linux和UNIX上的 libociei.so 和Windows上的oraociei12.dll);正确安装此文件将确定您是否以即时客户端模式运行

  • 客户端代码库(在Linux和UNIX上的 libclntsh.so.12.2 和oci.dll在Windows)

  • 安全库(Linux和UNIX上的 libnnz12.so 和Windows上的orannzsbb12.dll)

  • OCCI Library (Linux和UNIX上的 libocci.so.12.2 和Windows上的oraocci12.dll)



库安装在您的机器上。


I'm trying to connect my C++ program to Oracle database(12.2).

My C++ program is (I am using g++ compiler in ubuntu),

#include <occi.h> 
#include <iostream> 

using namespace std;

int main()
{   oracle::occi::Environment *env = oracle::occi::Environment::createEnvironment();
    oracle::occi::Connection *conn = env->createConnection("bsk", "oraclepass");
    env->terminateConnection(conn);
    oracle::occi::Environment::terminateEnvironment(env);
}

I'm getting the error

undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned long), void* (*)(void*, void*, unsigned long), void (*)(void*, void*))'
Employees.cpp:(.text+0x169): undefined reference to `oracle::occi::Environment::terminateEnvironment(oracle::occi::Environment*)'
collect2: error: ld returned 1 exit status

I'm new to database connectivity. Can you please help me with this?

解决方案

From Oracle's website, here is a valid example:

const string userName = "HR";
const string password = "password";
const string connectString = "";

Environment *env = Environment::createEnvironment();

{
   Connection *conn = env->createConnection(userName, password, connectString);
   Statement *stmt = conn->createStatement("SELECT blobcol FROM mytable");
   ResultSet *rs = stmt->executeQuery();
   rs->next();
   Blob b = rs->getBlob(1);
   cout << "Length of BLOB : " << b.length();
   ...
   stmt->closeResultSet(rs);
   conn->terminateStatement(stmt);
   env->terminateConnection(conn);
}

Environment::terminateEnvironment(env);

Your code seems to be in the right direction. So, it seems that some libraries are missing!

Again, from a different page on Oracle's website, here are the libraries required:

  • OCI Instant Client Data Shared Library (libociei.so on Linux and UNIX and oraociei12.dll on Windows); correct installation of this file determines if you are operating in Instant Client mode
  • Client Code Library (libclntsh.so.12.2 on Linux and UNIX and oci.dll on Windows)
  • Security Library (libnnz12.so on Linux and UNIX and orannzsbb12.dll on Windows)
  • OCCI Library (libocci.so.12.2 on Linux and UNIX and oraocci12.dll on Windows)

Make sure these libraries are installed on your machine.

这篇关于将C ++程序与Oracle连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆