Rechercher : dans
Par :

Acces base oracle via ODBC avec C

Dernière réponse le 17 sep 2007 à 14:31:07 arfi26, le 14 sep 2007 à 14:54:26 
 Signaler ce message aux modérateurs

Bonsoir,

J'ai créé une fonction avec langage C, qui accede à une base de données Oracle via une source de données ODBC.
Ma fonction me retourne rien.

Mon probleme est :

1- j'utilise la fonction : SQLConnect

retcode = SQLConnect(hdbc,(unsigned char *) chr_ds_name,SQL_NTS,(SQLCHAR *) szUName,SQL_NTS,(SQLCHAR *) szPSName,SQL_NTS);

Mais le compilateur ( j'utilise Microsoft Visual Studio 2005 ) m'affiche toujours que dans la fonction SQLConnectW on ne peut convertir le type SQLCHAR * en SQLWCHAR * !!!!
je ne comprend plus rien.

et quand je mets SQLConnectW à la place de SQLConnect, et SQLWCHAR à la place de SQLCHAR alors le code retour est toujours different de zero ! ma connexion surement n'est pas etablie, ce qui explique que je n'ai rien en retour( pas de resultat select ) !

2- je ne sais pas si ma cource ODBC est operationnelle. Pour info j'utilise Oracle ODBC Driver et j'ai le client oracle sur mon poste installé.

Merci de me debloquer, svp, et si vous connaissez une façon plus agreable pour ce connecter à Oracle pour lancer des requetes SQL alors aidez moi .

Merci par avance.

Configuration: Windows 2000
Internet Explorer 6.0

Meilleures réponses pour « acces base oracle via ODBC avec C » dans :
Connexion à une base Oracle en php Voir 1. Périmètre Cet article est un exemple de connexion à une base Oracle par le biais d'un script php. Cet article ne traite pas la configuration de votre serveur Oracle, et de votre client Oracle. Nous partons du principe que vous pouvez accéder à...
Afficher le nom des base de données Oracle VoirPour afficher le nom des bases de données Oracle ainsi que les données s'y référant, il suffit de lancer la commande : SELECT * FROM V$DATABASE;
Oracle - Les fichiers d'une base Oracle VoirLes fichiers physiques d'une base Oracle Les fichiers physiques d'une base Oracle permettent de stocker de manière persistante les données manipulées par Oracle, tandis que la mémoire sert à optimiser la vitesse de fonctionnement de la base de...
Oracle - Les processus VoirLes processus Le fonctionnement de la base Oracle est régi par un certain nombre de processus chargés en mémoire permettant d'assurer la gestion de la base de données. On distingue généralement deux types de processus : les processus utilisateurs...
Bases de données - Introduction VoirQu'est-ce qu'une base de données ? Une base de données (son abréviation est BD, en anglais DB, database) est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données...

1

elghafoud, le 14 sep 2007 à 17:09:02

Salut!

J'ai eu le meme probleme pendant un moment! mais j'ai trouvé un tuto qui explique super bien comment tu peux avancer facilement! je te laisse visiter ma page le cours est la :

http://www.elghafoud.net/Le-langage-C-ODBC.html

sinon tu pourra téléchargé direct sur
http://gforge.elghafoud.net/...
Là où la diplomatie a echoué, il reste la femme.

Répondre à elghafoud

2

 arfi26, le 17 sep 2007 à 14:31:07

Merci enormement pour ta reponse.
Mais j'ai tjrs des problemes en utilsant ton code, le compilateur continue à m'afficher les deux msg d'erreurs déja rencontrés avant, avec la fonction SQLConnect, et la fonction sprintf mnt :

\main.cpp(82) : error C2664: 'sprintf' : cannot convert parameter 1 from 'UCHAR *' to 'char *'
et
\main.cpp(86) : error C2664: 'SQLConnectW' : cannot convert parameter 2 from 'UCHAR *' to 'SQLWCHAR *'

D'autre part j'ai compris que pour se connecter, 'il faut utiliser soit la fonction SQLDriverConnect soit SQLConnect. alors est ce que pour les deux fonctions je dois avoir ma source ODBC créé ?

quelles parametres à passer à l'une ou l'autre dans le cas ou je veux me connecter à une base ORACLE ayant les caracteristiques suivantes ( lecture dans mon tnsnames.ora) :

BASEPRODUCTION =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 20.0.0.20)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = PROD)
)
)


Merci par avance pour ton aide.

Répondre à arfi26