C++ / Oracle / Linux

Coloque aqui tutoriais (por enquanto, sobre qualquer assunto relacionado a Oracle) e apostilas.
Responder
kim_kaphwan
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 6
Registrado em: Sex, 04 Jun 2004 8:54 am
Localização: sp

Ola,
Segue abaixo uma dica bem básica de como utilizar a biblioteca OCCI que vem com o Oracle para criar programas em C++ acessando seu banco de dados.
Como dá para perceber, utilizar a OCCI.h é bem simples e lembra muito a utilização java.sql e os drives jdbc..
Pra compilar o exemplo no Linux, utilize o seguinte comando...

Selecionar tudo

c++ -L /oracle/9.2.0/lib/ -L /oracle/9.2.0/rdbms/lib/ -I /oracle/9.2.0/rdbms/public/ -I /oracle/9.2.0/rdbms/demo/  -lclntsh `cat /oracle/9.2.0/lib/sysliblist` -ldl -lm -locci -o OraUsers OraUsers.cpp
... mudando o /oracle/9.2.0/ pelo seu ORACLE_HOME. Depois de compilado é só executar:

Selecionar tudo

./OraUsers  
Com a opção --noora, ele suprime os usuários oracle do sistema.

Em breve coloco outra dica de como criar funções internas no banco, utilizando c/c++.
Espero que gostem da dica.. :D

Selecionar tudo

#include <string>
#include <iostream.h>
#include <occi.h> //Include das bibliotecas do Oracle

using namespace oracle::occi; //Utiliza o namespace das libs do Oracle occi.
using namespace std;


int main(int argc, char *argv[]) {

Environment* env = Environment::createEnvironment(); //Cria o ambiente de acesso ao Oracle

Connection* conn = env->createConnection( "system", "senha" ); //Conecta ao Oracle utilizando usuario, senha

cout << "\n------------------------------------------------------------------------------\n" << endl;

cout << "\t\t\tUsuários Conectados\n" << endl;

Statement* stmt = conn->createStatement(); //Cria um objeto de declaração e o associa à conecção do Oracle 

stmt->setSQL("select sid,serial#,username,osuser,server,status from v$session"); // Cria o sql dentro do objeto de declaração

ResultSet *rs = stmt->executeQuery(); // Cria um objeto ResultSet  e executa a query do objeto de declaração

while (rs->next()) //Enquanto houver registro...
{
  int sid = rs->getInt(1); //Pega a primeira coluna do resultado e associa a váriavel.
  string serial = rs->getString(2); //Pega a segunda coluna do resultado ... 
  string username = rs->getString(3);
  string osusuario = rs->getString(4);     
  string server = rs->getString(5);
  string status = rs->getString(6);
  if (argc>1 && strcpy(argv[1],"-noora")) { // Imprime resultado. 
  if(osusuario!="oracle") cout << "SID: "<< sid << "|" << "Usuário:" << username << "|" << "Usuário SO: "<< osusuario <<"|"<<"Servidor: "<< server << "|"<< "Status: "<< status << endl;
  } else {
	cout << "SID: "<< sid << "|"<< "Usuário:" << username << "|" << "Usuário SO: "<< osusuario <<"|"<<"Servidor: "<< server << "|"<< "Status: "<< status << endl;
  }

}

conn->terminateStatement(stmt); //Fecha  o objeto de declaração. 

env->terminateConnection(conn); // Fecha a conexão ao banco. 

Environment::terminateEnvironment(env); //Fecha o objeto de ambiente.

cout << "\n------------------------------------------------------------------------------\n" << endl;
}
bortho
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Ter, 23 Out 2007 10:02 am
Localização: SP

Olá,

Ressuscitado o post, estou tendo meu primeiro contato com a programação em linux e não consigo compilar o código como apresentado acima. Alguém poderia me dar uma mão ?

Obrigado
bortho
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Ter, 23 Out 2007 10:02 am
Localização: SP

Problema resolvido, o makefile estava com parametros errados
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes