Connexion à une base oracle via programme C ou C++
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 2013
-
6 févr. 2007 à 15:40
cs_exar
Messages postés286Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention22 avril 2012
-
22 nov. 2007 à 16:29
Bonjour a tous,
Alors voila,je cherche un moyen d'attaquer une base oracle a partir d'un petit programme simple qui
me permettra de faire des INSERT et autre requetes SQl tres simples
je suis sous windows ;ma base oracle est v10.g;et je travaille sous visual studio 2005.
Apres quelques recherches j'ai trouver une librairie "oci "
malheureusement cela ne fonctionne pas.
Quandje lance mon programme ca plante au niveau de l'environnement
juste avant de faire laconnexion....
je sais pas si vous vous y connaissez, mais je ne trouve quasi aucune doc
et je planche dessus depuis plusieurs heures sans trouver de moyen de m'en sortir
pourriez vous SVP m'aidez...
voici mon bout de code test pr ma connexion:
#include
<stdlib.h>
#include
#include
<conio.h>
#include
<occi.h>
using
namespace
oracle::occi;
using
namespace
std;
int
main (
int
argc,
char
* argv[]){
// Fetch our required environment variable values. The program
// will exit if one of these can’t be obtained.
//
const
string user =
"orafce"
;
const
string pass =
"orafce"
;
const
string osid =
"orafce"
;
// Establish the Oracle client environment. Allows the Oracle
// libraries to allocate memory, initialize data structures, etc.
// We couldn’t connect. what() will give us the Oracle error
// code and message, so we can troubleshoot the issue.
//
cerr <<
"Can’t connect: "
<< ea.what();ret = 1;
}
// Cleanup the environment. It is a very good idea to let Oracle
// cleanup before your program terminates.
//
Environment::terminateEnvironment(env);
//while(!kbhit()); // exit condition !! get char CTRL C
return
ret;}
et voici l'erreur quis 'affiche lors du lancement
First-chance exception at 0x612f89e9 in sgbd-sample.exe: 0xC0000005: Access violation reading location 0x6661726f.
Unhandled exception at 0x612f89e9 in sgbd-sample.exe: 0xC0000005: Access violation reading location 0x6661726f.
The program '[1540] sgbd-sample.exe: Native' has exited with code 0 (0x0).
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 févr. 2007 à 01:05
Sous Windows on utilise ODBC ou ADO (je conseille ADO pour sa simplicité).
J'ai fait plusieurs exemples avec l'un et l'autre, s'y référer.
Le format de la chaine de connexion est ici (prendre OLE DB):
http://www.connectionstrings.com/?carrier=oracle
Les biblis exotiques sont à proscrire. La prog des bases de données en code natif ne me semble pas non plus indiquée pour un débutant pour cause de pointeur d'interface COM et autres joyeusetés de ce genre.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 7 févr. 2007 à 09:43
Ok merci pour ta réponse, je vais donc poursuivre mes recherches sur ADO voir ODBC
Pour cette bibli "exotique" elle m'a été conseillée par les gens de chez Oracle( voir leur site)
Si je rencontre un probleme je te recontacte , merci encore!
Donc voila je ne vois pas en quoi ca ne marche pas pourquoi est ce que ca se connecte pas?
peut etre une erreur dans mon choix de connexion string??????
merci de m'aider
Vous n’avez pas trouvé la réponse que vous recherchez ?
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 7 mars 2007 à 11:25
Gaffe de ne pas mixer ANSI et UNICODE dans ton projet.
recordset->Fields->GetItem(L"TIME_END")->Value();
L'emploi direct de l'index est prérable pour les perfs, il n'y aura pas de reherche de la position du champ.
recordset->Fields->GetItem((long) IndexIci)->Value();
Reprends EXACT la syntaxe de mes exemples, tu seras ainsi certain que le problème ne viendra pas de là.
annaquin
Messages postés1Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention 7 mars 2007 7 mars 2007 à 11:30
Tu devrais aussi ne pas ecouter n'importe qui.
utilises OCCI et ne part pas dans les facilites ODBC ... Ton premier probleme vient qu'il ne connait pas ORA_HOME. Comme il a besoin du tnsname, il faut que ORA_HOME pointe sur le repertoire d'installation de ton driver oracle.
cs_exar
Messages postés286Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention22 avril 20121 22 nov. 2007 à 16:29
Hello,
Il y a aussi Pro*C/C++ (précompilateur C/C++ d'Oracle) qui fonctionne très très bien ! Surtout si ce n'est que pour quelques petits select ou insert...
Bon amusement !