Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Diogo M

Ligação a Base de Dados Oracle através do Visual Studio 2008

Recommended Posts

Diogo M

Boas

Estou a tentar criar um projecto em Visual Studio 2008 que me permita aceder a uma base de dados ORACLE.

Queria pedir se me podiam ajudar,  fornecendo um Guia ou um Tutorial, ou até mesmo dicas para a realização do mesmo.

Muito Obrigado

Share this post


Link to post
Share on other sites
apocsantos

      Bom dia,

    O google é sempre uma boa ajuda, de qualquer das formas deixo um exemplo minimamente adaptado.

#include <DbManager.h>
#include <iostream>

using namespace std;

using namespace oracle::occi;

const string sqlString("select numero,nome , data from emp");

const string dateFormat("DD-MON-YYYY HH24:MI:SS");

int main(int argc, char **argv)

{
    if (argc != 2)
    {
        cerr << "\nUsage: " << argv[0] << " <db-user-name>\n" << endl;
        exit(1);
    }
    
    // inicia os serviços oracle
    
    DbManager* dbm = NULL;
    
    OracleServices* oras = NULL;
    
    Statement *stmt = NULL;
    
    ResultSet *resultSet = NULL;
    
    try
    {
        
        // Obtem o Objecto dos OracleServices com os argumentos definidos.
        
        dbm = new DbManager(userName);
        
        oras = dbm->getOracleServices();
        
        // Captura a ligação
        
        Connection * conn = oras->connection();
        
        // cria um statment
        
        stmt = conn->createStatement(sqlString);
        
        int empno;
        
        string ename;
        
        Date hireDate;
        
        string dateAsString;
        
        // Executa a query para obter o resultset
        
        resultSet = stmt->executeQuery();
        
        while (resultSet->next())
        {
            
            empno = resultSet->getInt(1);  // recebe a primeira coluna da query;
            
            ename = resultSet->getString(2);  // recebe a segunda coluna da query
            
            hireDate = resultSet->getDate(3);  // recebe a terceira coluna da query
            
            dateAsString="";
            
            //Não recebe nullo enquanto os dados não tiverem sido todos lidos
            
            if (resultSet->isNull(1))
            {
                cout << "numero de emprego é nulo... " << endl;
            }
            if (resultSet->isNull(2))
            {
                cout << "Nome do empregado é nulo..." << endl;
            }
            if (resultSet->isNull(3))
            {
                cout << "data é nulo..." << endl;
            }
            else
            {
                dateAsString=Data.toText(dateFormat); //converte a data pata texto
            }
            cout << numero << "\t" << nome << "\t" << dataAsString << endl;
            
        }
        
        // Fecha a declaração do resulset 
        
        stmt->closeResultSet(resultSet);
        
        conn->terminateStatement(stmt);
        
        // Fecha a ligação
        
        delete dbm;
        
    }
    catch (SQLException& ex)
    {
        if (dbm != NULL)
        {
            dbm->rollbackActions(ex, stmt, resultSet); // Liberta os recursos e executa o rollback
        }
    }
    catch (ExoException& ex1)
    {
        cerr << "\nCaught ExoException:\n" << ex1.getExceptionText() << endl;
        exit(2);
    }
    
    return 0;
}

    Com este exemplo já tens por onde começar. Na Oracle Developers Network tens muito mais informação e webcasts específicos, alguns dos quais recomendo vivamente.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.