簡體   English   中英

將C ++程序與Oracle連接

[英]Connecting c++ program with Oracle

我正在嘗試將C ++程序連接到Oracle數據庫(12.2)。

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

#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);
}

我遇到了錯誤

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

我是數據庫連接的新手。 你能幫我嗎?

Oracle網站上,這是一個有效的示例:

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);

您的代碼似乎朝着正確的方向發展。 因此,似乎缺少某些庫!

同樣, 在Oracle網站其他頁面上 ,以下是所需的庫:

  • (在Windows libociei.so在Linux和UNIX和oraociei12.dll)OCI即時客戶端數據共享庫; 此文件的正確安裝確定您是否在Instant Client模式下運行
  • 客戶端代碼庫(在Linux和UNIX上為libclntsh.so.12.2 ,在Windows上為oci.dll)
  • 安全庫(libnnz12.so在Linux和UNIX和orannzsbb12.dll在Windows上)
  • OCCI庫(libocci.so.12.2在Linux和UNIX和oraocci12.dll在Windows上)

確保這些庫已安裝在您的計算機上。

試試這個代替

$ g++ sample.C -I/opt/oracle/11.0.2/rdbms/public/ -L/opt/oracle/11.0.2/lib/ -locci -lclntsh

更換/opt/oracle/11.0.2與Oracle home路徑,它應該工作。

從此處查找示例代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM