Accueil > Forum > > > > Connexion à une base oracle via programme C ou C++
Connexion à une base oracle via programme C ou C++
mardi 6 février 2007 à 15:40:04 |
Connexion à une base oracle via programme C ou C++

LaTatadu91
|
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
<iostream>
#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.
//
Environment*
const
env = Environment::createEnvironment(Environment::DEFAULT);
// Open a connection to the database, then close it.
//
int
ret = 0;
try
{
Connection*
const
con = env->createConnection(user, pass, osid);cout <<
"Connected as "
<< user <<
"@"
<< osid <<
"."
<< endl;
//list_visible_tables ( con,user,osid);
displayAllRows(con);
cout <<
"Closing connection."
<< endl;env->terminateConnection(con); }
catch
(SQLException ea){
// 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). Je suis débutant merci pr votre aide !!!
|
|
mercredi 7 février 2007 à 01:05:31 |
Re : Connexion à une base oracle via programme C ou C++

BruNews
|
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): [ Lien ]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. ciao... BruNews, MVP VC++
|
|
mercredi 7 février 2007 à 09:43:05 |
Re : Connexion à une base oracle via programme C ou C++

LaTatadu91
|
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!
|
|
mercredi 7 février 2007 à 11:30:38 |
Re : Connexion à une base oracle via programme C ou C++

LaTatadu91
|
Salut,* Je n'arrive pas a trouver d'exemple simple et basique de connection a oracle via ADO ecrit en C . Pourrez tu m'en donner un , un simple qui effectue seulement la connexion a oracle puis un select ou autre requete basique??? je te remercie d'avance pr ton aide
|
|
mercredi 7 février 2007 à 15:13:40 |
Re : Connexion à une base oracle via programme C ou C++

LaTatadu91
|
Salut voila ce que j'ai fait apres une petite recherche le code compile sans erreur mais il ne retourne rien... lors du SELECT rien ne s'affiche ensuite !!! #include <iostream>#include <stdio.h>#import "C:\Program Files\Common files\System\ado\msado15.dll" \no_namespace rename( "EOF","ADOEOF")void main(){ //initialise les variablesHRESULT hr; CoInitialize(NULL); try{ //declare la connection_ConnectionPtr connection; hr = connection.CreateInstance( __uuidof(Connection));//vérifie si réussiteif (FAILED(hr)){ throw _com_error(hr);} //declare le recordset_RecordsetPtr recordset; hr = recordset.CreateInstance( __uuidof(Recordset));//verifie si reussiteif (FAILED(hr)){ throw _com_error(hr);} //établi la connectionconnection->CursorLocation = adUseClient; connection->Open( "Provider=OraOLEDB.Oracle;Data Source=orafce;User Id=orafce;Password=orafce;", L"",L"", adConnectUnspecified);//va chercher les éléments recordset->Open( "SELECT * from STOPPAGE",connection.GetInterfacePtr(), adOpenForwardOnly, adLockReadOnly, adCmdText); //les affichentwhile(!recordset->ADOEOF){ _variant_t var; var = recordset->Fields->GetItem(L "TIME_END")->GetValue();std::cout << static_cast<char *>(_bstr_t(var.bstrVal))<< std::endl;recordset->MoveNext(); }; //referme le recordsetrecordset->Close(); } catch(_com_error &e){ std::cout << "planté";} catch(...){ std::cout << "planté";}; } 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
|
|
mercredi 7 mars 2007 à 11:25:21 |
Re : Connexion à une base oracle via programme C ou C++

BruNews
|
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à.
ciao... BruNews, MVP VC++
|
|
mercredi 7 mars 2007 à 11:30:33 |
Re : Connexion à une base oracle via programme C ou C++

annaquin
|
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.
ciao
|
|
jeudi 22 novembre 2007 à 16:29:09 |
Re : Connexion à une base oracle via programme C ou C++

exar
|
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 !
|
|
Cette discussion est classée dans : base, programme, const, oracle, environment
Répondre à ce message
Sujets en rapport avec ce message
Liens entre 2 tables sous Base Oracle [ par Charly06 ]
Bonjour ma question est la suivante : Comment créer un lien entre 2 tables, sachant que je suis sous Oracle. D'avance merci
base de registre... [ par morgandetoi06 ]
svp pouvez vous me donner la synyaxe EXACTE d une fonction pour ecrire une clef dans la base de registre dans HKEY_CURRENT_USER\SOFTWARE\Microsoft\Win
utlité des registres [ par glipper ]
Bonjour,J'aimerais savoir dans quel genre de cas il est utile d'utiliser la base des registres. Peut-on creer des clés juste afin qu'elles contiennent
Connexion ODBC pour base Oracle en C/C++ [ par mista ]
mistaBonjour,Debutante en panique, je dois creer un programme win32 console, sous vc++6, NT : qui me permettent de me connecter à une base de données
faire un commit pour base oracle via VC++ [ par sisteroots ]
sisterootsBonsoir à tous, j'espere qu'a cette heure qq un pourra me venir en aide...Je travaille sur un programme d'integration de données de fichiers
Oracle OCI ou fichier ? [ par PunkDude424 ]
salut, je voudrais faire un programme et avoir la possibilité qu'il sois billingue, alors je me demandais se que j'était mieux de faire, mon programme
Un débutant qui veut apprendre! [ par skunsky ]
Bonjour à tous,Je voux explique mon probleme: Je voudrais creer un petit programme avec une interface graphique (faite avec c++ builder) qui me permet
base d edonnee / probleme si un champs est vide [ par callaghan1981 ]
Please il y aurai un gentil admin qui pourrai ;e proposer une solution?? mon programme se connecte a une base de donnee... tt est parfais,.. mon prog
Oracle et C++ [ par fluminis ]
Bonjour à tousJe recherche comment on peut se connecter en C++ a un base de donnees Oracle.J'arrive bien a utiliser MySql avec les api c qui sont dist
Trouver <mysql.h> [ par lolo007 ]
Bonjour a tousDans le cadre d'un projet, je dois réaliser la lecture dans un automate grâce à un serveur OPC puis, ce que j'ai lue, je dois le mettre
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|