Visual Studio 2008 c++ com Oracle [RESOLVIDO]  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Pessoal blz?

Estou com uma dificuldade ao tentar conectar o c++ no oracle, usei alguns exemplos da net mas nao tive sucesso, alguém tem algum tuturial?

Agradeço a ajuda.

This message was edited 1 time. Last update was at 11/11/2010 17:30:44


"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Esqueci de citar que o banco é o oracle 10g.

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Pessoal consegui colocar as bibliotecas do oracle, elas estão disponíveis nó próprio diretório do banco de dados.
No entanto estou tendo outro problema quando executo o código o seguinte erro é retornado. "ORA-24960: o atributo OCI_ATTR_USERNAME Ú maior do que o tamanho mßximo permitido 255"

O estranho é que passo um usuário com 5 letras e não 255...

Segue o trecho do código


A outra pergunta é a seguinte.

Gostaria de saber se alguem já usou as bibliotes Oracle:ataAccess::Client com c++? Se sim, como fez para add. essa lib como referencia no projeto, pois Visual Studio C++ é diferente do C# ou vb. Alguma dica?

Aguardo retorno.

Obrigado a todos.

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Infelizmente não trabalhei com os drivers da Oracle.

Só algumas dicas de estilo, envolvendo C++:
1. Declare variáveis o mais próximo do ponto onde for usa-las (serve pra java também);
2. Evite construir duas vezes seus objetos (como vc faz com as Strings);
3. Resource Acquisition is Initialization;
4. Leia atentamente a documentação: use os typedefs definidos pelo fabricante.

O seu código ficaria um pouco melhor assim:


Melhor ainda se algum objeto local gerenciar o Environment e a Connection, como um Smart Pointer. É especialmente importante se exceptions são lançadas em seu código. Lembre-se que o C++ não tem garbage collector, nem finally, e tudo que for alocado terá que ser, necessariamente, manualmente desalocado.

This message was edited 3 times. Last update was at 09/11/2010 13:58:50


@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

E ai Vini blz, então mudei para UString e esta dando um erro agora quando compilo o projeto.

Segue o erro

with
[
_Elem=utext
]
Constructor for struct 'std::basic_string<_Elem>::_Has_debug_it' is declared 'explicit'
with
[
_Elem=utext
]

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28390/globalization.htm

UString requer strings Unicode, que normalmente começam por L"alguma coisa".
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Não está faltando a connectionString no seu terceiro parâmetro não? Pelo menos, é o que diz o doxygen:
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96583/cci08re9.htm#1089985

Interessante, na versão mais nova já usam std::string direto.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

ViniGodoy wrote:Não está faltando a connectionString no seu terceiro parâmetro não? Pelo menos, é o que diz o doxygen:
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96583/cci08re9.htm#1089985

Interessante, na versão mais nova já usam std::string direto.


Então olhando no .h ele coloca um valor default nesse atributo da função, no entanto quando eu declaro o UString igual você citou da pau... O erro que postei antes tava errado, o erro que esta dando é esse:
error C2440: 'initializing' : cannot convert from 'const char [6]' to 'oracle::occi::UString &'

O erro esta dando quando compila, segue o trecho do código.


Obrigado pela ajuda.

This message was edited 1 time. Last update was at 09/11/2010 14:19:02


"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
ViniGodoy
Moderador
[Avatar]

Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline

Tire o & das declarações. Ele é usado para evitar a cópia do valor na hora de passar parâmetro. Essa é a sintaxe de referência.

Como o entanglement falou, o UString é "Unicode String". Provavelmente você terá que escrever "L" antes das aspas.

@ViniGodoy - Lattes

Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!

Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).

Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Quando eu tiro o & ele da o erro que postei antes...

error C2664: 'std::basic_string<_Elem>::basic_string(std::basic_string<_Elem>::_Has_debug_it)' : cannot convert parameter 1 from 'const wchar_t [6]' to 'std::basic_string<_Elem>::_Has_debug_it' with
[
_Elem=utext
]
Constructor for struct 'std::basic_string<_Elem>::_Has_debug_it' is declared 'explicit'
with
[
_Elem=utext
]

Segue trecho do código

Os mais estranho que tem um monte de gente na internet que usa com string e não relata erro... Que estranho....

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
lucas_carvalho100
JavaEvangelist
[Avatar]

Membro desde: 18/03/2010 08:23:16
Mensagens: 322
Offline

Pessoal resolvi o problema,

Utilizei uma biblioteca chamada OTL junto com a OCI da oracle.

Link da otl [url]http://otl.sourceforge.net/otl3_down.htm[code]

A OCI da oracle vem junto com a instalação do banco de dados.


Qualquer duvida estou a disposição.

Obrigado pela ajuda de todos.

"A mente que se abre a uma nova idéia jamais voltará ao seu tamanho original."
Albert Einstein
[WWW]
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team