Connexion à une base données dans un programme C via ODBC

boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 3 juil. 2009 à 15:30
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 - 8 juil. 2009 à 10:11
Salut,

J'ai installé ODBC et j'ai l'attaché au ma base de données Mysql.

1) Comment je vais tester dans mon programme C sous visual studio 2008 ma connexion au base de données pour faire des requêtes de sélection et de Mise à jour ?

2) Est ce que je dois configurer mon projet C sous Visual studio et modifier quelques options ou bien je ne modifie rien ?

c'est à dire les fonctions d'ODBC est connues dans mon programme C sous Visual Studio?

3) Mysql est de version 4.0.15,
ODBC est de version  Mysql ODBC 3.51 Driver

Est ce que chaque version d'ODBC a des fonctions particulières pour les utiliser dans mon programme C?

Comment savoir les définitions de chacun de ces fonctions d'ODBC ?

3 réponses

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 juil. 2009 à 22:37
Salut,
Avec MySQL en C, pas besoin d'ODBC. L'utilisation directe des fonctions de libmysql.dll est plus facile, plus efficace, plus rapide et permet un plus grand controle de l'application. Bref, que des avantages.
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
7 juil. 2009 à 18:15
Salut,
Comment je fais une connexion avec Mysql en C sans ODBC ?Quelles  sont les étapes à suivre sachant que j'ai trouvé dans le dossier de mysql téléchargé (3) Mysql est de version 4.0.15 avec easyPhp) seulement le dossier bin
sous C:\Program Files\EasyPHP1-7\mysql\bin
pas de include et lib ?
Pouvez vous me donner  un exemple de test pour le tester ?

Merci.
0
boualiasma Messages postés 393 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 23 décembre 2011 5
8 juil. 2009 à 10:11
Salut,


- Je voudrais établir dans mon programme C une connexion à une base de
données crée sous Mysql(j'ai instalé EasyPHP-1.7-setup). Sachant que
mon programme C est sous Visual Studio 2008.


- La vesion de mysql est 4.0.15.

- J'ai trouvé seulement le dossier bin sous:

C:\Program Files\EasyPHP 1.7\mysql\bin

pas de dossiers lib et include .


- Quelles sont les étapes à suivre pour établir cette connexion pour
que je puisse traiter des requêtes de sélection et de Mise à jour ?


- y-a-il un bon exemple de test pour vérifier ces étapes ?


Je serais très contente pour toute solution.


Je voudrais connecter à une base de données Mysql via ODBC à partir

d'un programme C sous Visual Studio 2008 Windows.

le nom de DSN est : pays_dsn

le nom d'utilisateur : root

le mot de passe est vide

Code :
 
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
 
int main()
{
SQLHENV env;
 
IF( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env)))
fprintf(stderr, "La fonction SQLAllocHandle a echoue
(SQL_HANDLE_ENV).\n");
else
{
IF( !SQL_SUCCEEDED(SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION,
(void *)SQL_OV_ODBC3, 0)))
fprintf(stderr, "La fonction SQLSetEnvAttr a echoue.\n");
else
{
SQLHDBC con;
 
IF( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC, env,
&con)))
fprintf(stderr, "La fonction SQLAllocHandle a echoue
(SQL_HANDLE_DBC).\n");
else
{
SQLCHAR dsn[] = "pays_dsn", uid[] = "root", pwd[] =
"";
 
IF( !SQL_SUCCEEDED(SQLConnect(con, dsn, SQL_NTS, uid,
SQL_NTS, pwd, SQL_NTS)))
// IF( !SQL_SUCCEEDED(SQLConnect(con,(SQLCHAR *)"pays_dsn",
SQL_NTS,(SQLCHAR *)"root", SQL_NTS,(SQLCHAR *)"", SQL_NTS)))
fprintf(stderr, "La fonction SQLConnect a echoue.
\n");
else
{
SQLHSTMT stmt;
 
IF( !SQL_SUCCEEDED(SQLAllocHandle
(SQL_HANDLE_STMT, con, &stmt)))
fprintf(stderr, "La fonction SQLAllocHandle a
echoue (SQL_HANDLE_STMT).\n");
else
{
IF( !SQL_SUCCEEDED(SQLExecDirect(stmt,
"SELECT * FROM pays_tbl;", SQL_NTS)))
fprintf(stderr, "La fonction SQLExecDirect
a echoue.\n");
else
{
SQLCHAR pays[15], capitale[15];
 
printf("PAYS > CAPITALE\n\n");
 
while (SQL_SUCCEEDED(SQLFetch(stmt)))
{
SQLGetData(stmt, 1, SQL_C_CHAR, pays,
sizeof(pays), NULL);
SQLGetData(stmt, 2, SQL_C_CHAR,
capitale, sizeof(capitale), NULL);
printf("%-14s %-14s\n", pays,
capitale);
}
}
 
SQLFreeHandle(SQL_HANDLE_STMT, stmt);
}
 
SQLDisconnect(con);
}
 
SQLFreeHandle(SQL_HANDLE_DBC, con);
}
}
 
SQLFreeHandle(SQL_HANDLE_ENV, env);
}
getch();
RETURN0;
 
}
 

Après la compilation et l'exécution j'aurais ce message:

La fonction SQLConnect a echoue


J'ai pris cet exemple de lien suivant:
http://melem.developpez.com/langagec/odbc/


Comment ce problème de connexion va être résolue?

Avez-vous un exemple de test pour tester ma connexion et traiter quelques requetes ?


SVP, j'ai besoin de vos aides.
0
Rejoignez-nous