2017-10-17 3 views
-1

J'essaie de connecter mon programme C++ à la base de données Oracle (12.2).Connexion du programme C++ avec Oracle

Mon programme C++ est (j'utilise le compilateur g ++ dans 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); 
} 

Je reçois l'erreur

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 

Je suis nouveau à la connectivité de base de données. Pouvez-vous m'aider s'il vous plaît avec ceci?

+0

Cela n'a rien à voir avec la connectivité à la base de données, mais c'est probablement dû à une bibliothèque manquante. – mustaccio

Répondre

0

De site Oracle's, voici un exemple valide:

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

Votre code semble être dans la bonne direction. Donc, il semble que certaines bibliothèques sont manquantes!

Encore une fois, d'un different page on Oracle's website, voici les bibliothèques requises:

  • OCI partagé instantanée des données client Bibliothèque (libociei.so sous Linux et UNIX et oraociei12.dll sous Windows); l'installation correcte de ce fichier détermine si vous êtes en mode Instant Client
  • code client Bibliothèque (libclntsh.so.12.2 sous Linux et UNIX et OCI.DLL sous Windows)
  • Bibliothèque de sécurité (libnnz12.so sur Linux et UNIX et orannzsbb12.dll sous Windows)
  • CICO Bibliothèque (libocci.so.12.2 sous Linux et UNIX et oraocci12.dll sous Windows)

Assurez-vous que ces bibliothèques sont installées sur votre machine .

+0

J'ai déjà installé ces bibliothèques. Mais j'ai toujours la même erreur. – BSK