janin900
Messages postés1Date d'inscriptionmardi 8 avril 2003StatutMembreDernière intervention19 octobre 2006
-
19 oct. 2006 à 17:35
sambalien
Messages postés3Date d'inscriptionlundi 11 mai 2009StatutMembreDernière intervention11 janvier 2010
-
14 mai 2009 à 17:47
Bonjour,
je voudrais savoir si il est possible en C d'initialiser une connexion
avec une BDD type MySQL, et de réaliser des requetes avec cette
connexion mais bien plus tard.
Je m'explique :
Etant donné que l'executable est censé excécuter beaucoup de requetes à
la BDD, je ne veux pas à chaque fois réinitialiser la connexion à la
BDD, mais garder mon pointeur sur mon objet de type MYSQL.
Cependant, entre le moment où j'initialise ma connexion à la BDD et le
moment où j'exécute mes requetes, je fais plusieurs opérations dont par
exemple du pooling... et ca me provoque des erreurs de style
CR_COMMANDS_OUT_OF_SYNC...
Est-ce normal d'après vous ? Y a t'il un moyen de contourner ceci ?
Merci
Julien
cs_Matt67
Messages postés549Date d'inscriptionsamedi 6 septembre 2003StatutMembreDernière intervention 6 mars 20103 19 oct. 2006 à 22:57
Bonsoir,
Qu'est ce que le pooling ??? (je connaissais le 8 pool).
Se connecter à une base mysql en début d'appli et se déconnecter quand on a finit, je ne vois le problème. C'est ce que je fais et je n'ai jamais eu de soucis.
Il me semble, par contre, que si on reste connecté un certain temps, il y a une sorte de time-out qui te deconnecte automatiquement. Mais cela doit être modifiable (voir le my.cnf). J'ai remarqué cela quand j'avais oublié de fermer mon appli avant de partir le soir et la trouver le lendemain matin, déconnectée.
sambalien
Messages postés3Date d'inscriptionlundi 11 mai 2009StatutMembreDernière intervention11 janvier 2010 14 mai 2009 à 17:47
Avec la source suivante j'essaie de connecter access avec C j'utilise le Dec C++ comme compilateur. apres la compilation le linker renvoie 1 comme valeur et mon exe donne une erreur, j'ignore pourquoi la liason ne se fait pas alors je souhaite avoir votre aide.. merci de bien vouloir me repondre.
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
// #include <sqltype.h>
int main()
{
SQLHENV environnement; // cette varible cree l'environnement qui sera le parent de notre connexion
if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &environnement)) )
fprintf(stderr, "La fonciton SQLAllocHandle a echoue.\n");
else
{
if ( !SQL_SUCCEEDED(SQLSetEnvAttr(environnement, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0)) )
fprintf(stderr, "La fonction SQLSetEnvAttr a echoue.\n");
else {
SQLHDBC connexion;
if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC, environnement, &connexion)) )
fprintf(stderr, "La fonction SQLAllocHandle a echoue (SQL_HANDLE_DBC).\n");
else {
SQLCHAR dsn[] = "pays_dsn", uid[] = "melem", pwd[] = "1234";
if ( !SQL_SUCCEEDED(SQLConnect(connexion, dsn,SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS)) )
fprintf(stderr, "La fonction SQLConnect a echoue.\n");
else {
SQLHSTMT statement;
if( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_STMT, connexion, &statement)) )
fprintf(stderr, "La fonction SQLAllocHandle a echoue (SQL_HANDLE_STMT).\n");
else {
if ( !SQL_SUCCEEDED(SQL_ExecDirect(statement, "SELECT * FROM pays_tbl;", SQL_NTS)) )
fprintf(stderr, "La fonction SQL_ExecDirect a echoue.\n");
else {
SQLCHAR pays[15], capitale[15];
printf("PAYS > CAPITALE\n\n");