Pb en C
Chacal_ito
-
Chacal_ito -
Chacal_ito -
Salut,
je voudrais savoir comment peut-on attaquer une base mysql en C
cad se connecter, enregistrement, suppression.
kelles librairie faut-il inclurent ???, etc.......
Ya-t-il des URL parlant de ca ?? (j'ai po trouvé)
developpement sous Linux (mandrake 8.0)
Merci d'avance
je voudrais savoir comment peut-on attaquer une base mysql en C
cad se connecter, enregistrement, suppression.
kelles librairie faut-il inclurent ???, etc.......
Ya-t-il des URL parlant de ca ?? (j'ai po trouvé)
developpement sous Linux (mandrake 8.0)
Merci d'avance
5 réponses
salut
j ai oublie ton fichier je te l enverrai ce soir de chez moi
en attendant va sur:
http://cortes.cnam.fr:8080/ORACLE/proc.php
ca m a l air pas mal
a+
:-)
j ai oublie ton fichier je te l enverrai ce soir de chez moi
en attendant va sur:
http://cortes.cnam.fr:8080/ORACLE/proc.php
ca m a l air pas mal
a+
:-)
voila un source
#define FAUX 0
#define VRAI !FAUX
/*-------------------------- Declarations Oracle -------------------------*/
EXEC ORACLE OPTION (ORACA=YES);
EXEC SQL BEGIN DECLARE SECTION;
char *username = USERNAME;
char *password = PASSWORD;
VARCHAR sql_stmt[180];
char ma_rep[50];
int nombre;
EXEC SQL END DECLARE SECTION;
/*------------------------- Definitions des types ------------------------*/
/*------------------------- Declarations exportees -----------------------*/
/*------------------------ Declarations importees ------------------------*/
/*------------------------- Declarations statiques -----------------------*/
static int Pas_Trouve = FAUX;
/*----------------------- Declarations des fonctions ---------------------*/
/*------------------ Declarations des fonctions publiques ----------------*/
/*------------------- Declarations des fonctions privees -----------------*/
static void SqlInit( void );
static void SqlConnect( void );
static void SqlPrepareExecuteRequete( void );
static void ExecutionRequete( void );
static void SqlError( char *msg );
static void PasDeReponse(void);
/*------------------------ Definitions des fonctions ---------------------*/
/****************************************************************************/
/*
* NOM: main
*
* DESCRIPTION: Programme principal
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR:
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
void main( void )
{
/* Initialisation de la connexion a Oracle */
SqlInit( );
/* Connexion a Oracle */
SqlConnect( );
/* Preparation et Execution de la requete */
SqlPrepareExecuteRequete( );
printf( "Fin SQL\n" );
exec sql commit work release;
exit( 0 );
} /* End of main */
/****************************************************************************/
/*
* NOM: SqlInit
*
* DESCRIPTION: Initialisation de la connexion avec SQL
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: main
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlInit( void )
{
printf( "init SQL\n" );
EXEC SQL WHENEVER SQLERROR DO SqlError( "Oracle error" );
oraca.orastxtf = ORASTFERR;
} /* End of SqlInit */
/****************************************************************************/
/*
* NOM: SqlConnect
*
* DESCRIPTION: connexion a Oracle avec USERNAME et PASSWORD
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: main
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlConnect( void )
{
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("Connecte a Oracle.\n");
} /* End of SqlConnect */
/****************************************************************************/
/*
* NOM: SqlPrepareExecuteRequete
*
* DESCRIPTION: Prepare et execute la requete
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: main
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlPrepareExecuteRequete( void )
{
ExecutionRequete( );
} /* End of SqlPrepareExecuteRequete */
/****************************************************************************/
/*
* NOM: ExecutionRequete
*
* DESCRIPTION: Execute la requete et la parcours avec le curseur
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: SqlPrepareExecuteRequete
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
ExecutionRequete( void )
{
printf("Nous voulons savoir quel est le nombre de ville qui a un nombre d'habitants superieur a celui donne.\n");
printf( "Quel est le nombre d'habitants que vous voulez entrer ? ");
scanf( "%d", &nombre );
printf( "Utilisation de %d comme nombre d'habitants.\n", nombre);
/* Chaine de caracteres de la requete */
strcpy((char *)sql_stmt.arr,
"select count(distinct nomville) from Ville where nbrehab>:v1");
/* Taille de la requete */
sql_stmt.len = (unsigned short)strlen((char *)sql_stmt.arr);
printf(" La requete est: \n<%s>\n", sql_stmt.arr);
printf( "Exec requete\n" );
EXEC SQL PREPARE buffer_requete FROM :sql_stmt;
/* Declaration du curseur sur cette requete */
EXEC SQL DECLARE mon_curseur CURSOR FOR buffer_requete;
/* Ouverture du curseur sur le resultat de la requete */
EXEC SQL OPEN mon_curseur USING :nombre;
EXEC SQL WHENEVER NOT FOUND DO PasDeReponse();
{
while (Pas_Trouve != VRAI)
{
exec sql fetch mon_curseur into :ma_rep;
if( !Pas_Trouve )
printf("Reponse : %s \n", ma_rep);
}
}
printf("\nLa requete a retournee %d ligne%s.\n\n", sqlca.sqlerrd[2],
(sqlca.sqlerrd[2] == 1) ? "" : "s");
exec sql close mon_curseur;
} /* End of ExecutionRequete */
/****************************************************************************/
/*
* NOM: SqlError
*
* DESCRIPTION: Affiche le message d'erreur Oracle si besoin est.
*
* ENTREE(S): la chaine a afficher
*
* SORTIE(S) : void
*
* APPELEE PAR: ExecutionRequete
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlError( char * msg)
{
/* This is the ORACLE error handler.
* Print diagnostic text containing error message,
* current SQL statement, and location of error.
*/
printf("%s\n", msg);
printf("\n%.*s\n",
sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);
/* printf("in \"%.*s...\"\n", */
/* oraca.orastxt.orastxtl, oraca.orastxt.orastxtc); */
/* printf("on line %d of %.*s.\n\n", */
/* oraca.oraslnr, oraca.orasfnm.orasfnml, */
/* oraca.orasfnm.orasfnmc); */
/* Disable ORACLE error checking to avoid an infinite loop
* should another error occur within this routine.
*/
EXEC SQL WHENEVER SQLERROR CONTINUE;
/* Roll back any pending changes and
* disconnect from Oracle.
*/
EXEC SQL ROLLBACK RELEASE;
exit(EXIT_FAILURE);
} /* End of SqlError */
/****************************************************************************/
/*
* NOM: PasDeReponse
*
* DESCRIPTION: Affiche un message en fin de parcours de la requete
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: ExecutionRequete
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
PasDeReponse( void )
{
if( sqlca.sqlerrd[2] == 0 )
printf("Aucune reponse \n");
Pas_Trouve = VRAI;
} /* End of PasDeReponse */
#define FAUX 0
#define VRAI !FAUX
/*-------------------------- Declarations Oracle -------------------------*/
EXEC ORACLE OPTION (ORACA=YES);
EXEC SQL BEGIN DECLARE SECTION;
char *username = USERNAME;
char *password = PASSWORD;
VARCHAR sql_stmt[180];
char ma_rep[50];
int nombre;
EXEC SQL END DECLARE SECTION;
/*------------------------- Definitions des types ------------------------*/
/*------------------------- Declarations exportees -----------------------*/
/*------------------------ Declarations importees ------------------------*/
/*------------------------- Declarations statiques -----------------------*/
static int Pas_Trouve = FAUX;
/*----------------------- Declarations des fonctions ---------------------*/
/*------------------ Declarations des fonctions publiques ----------------*/
/*------------------- Declarations des fonctions privees -----------------*/
static void SqlInit( void );
static void SqlConnect( void );
static void SqlPrepareExecuteRequete( void );
static void ExecutionRequete( void );
static void SqlError( char *msg );
static void PasDeReponse(void);
/*------------------------ Definitions des fonctions ---------------------*/
/****************************************************************************/
/*
* NOM: main
*
* DESCRIPTION: Programme principal
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR:
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
void main( void )
{
/* Initialisation de la connexion a Oracle */
SqlInit( );
/* Connexion a Oracle */
SqlConnect( );
/* Preparation et Execution de la requete */
SqlPrepareExecuteRequete( );
printf( "Fin SQL\n" );
exec sql commit work release;
exit( 0 );
} /* End of main */
/****************************************************************************/
/*
* NOM: SqlInit
*
* DESCRIPTION: Initialisation de la connexion avec SQL
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: main
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlInit( void )
{
printf( "init SQL\n" );
EXEC SQL WHENEVER SQLERROR DO SqlError( "Oracle error" );
oraca.orastxtf = ORASTFERR;
} /* End of SqlInit */
/****************************************************************************/
/*
* NOM: SqlConnect
*
* DESCRIPTION: connexion a Oracle avec USERNAME et PASSWORD
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: main
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlConnect( void )
{
EXEC SQL CONNECT :username IDENTIFIED BY :password;
printf("Connecte a Oracle.\n");
} /* End of SqlConnect */
/****************************************************************************/
/*
* NOM: SqlPrepareExecuteRequete
*
* DESCRIPTION: Prepare et execute la requete
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: main
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlPrepareExecuteRequete( void )
{
ExecutionRequete( );
} /* End of SqlPrepareExecuteRequete */
/****************************************************************************/
/*
* NOM: ExecutionRequete
*
* DESCRIPTION: Execute la requete et la parcours avec le curseur
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: SqlPrepareExecuteRequete
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
ExecutionRequete( void )
{
printf("Nous voulons savoir quel est le nombre de ville qui a un nombre d'habitants superieur a celui donne.\n");
printf( "Quel est le nombre d'habitants que vous voulez entrer ? ");
scanf( "%d", &nombre );
printf( "Utilisation de %d comme nombre d'habitants.\n", nombre);
/* Chaine de caracteres de la requete */
strcpy((char *)sql_stmt.arr,
"select count(distinct nomville) from Ville where nbrehab>:v1");
/* Taille de la requete */
sql_stmt.len = (unsigned short)strlen((char *)sql_stmt.arr);
printf(" La requete est: \n<%s>\n", sql_stmt.arr);
printf( "Exec requete\n" );
EXEC SQL PREPARE buffer_requete FROM :sql_stmt;
/* Declaration du curseur sur cette requete */
EXEC SQL DECLARE mon_curseur CURSOR FOR buffer_requete;
/* Ouverture du curseur sur le resultat de la requete */
EXEC SQL OPEN mon_curseur USING :nombre;
EXEC SQL WHENEVER NOT FOUND DO PasDeReponse();
{
while (Pas_Trouve != VRAI)
{
exec sql fetch mon_curseur into :ma_rep;
if( !Pas_Trouve )
printf("Reponse : %s \n", ma_rep);
}
}
printf("\nLa requete a retournee %d ligne%s.\n\n", sqlca.sqlerrd[2],
(sqlca.sqlerrd[2] == 1) ? "" : "s");
exec sql close mon_curseur;
} /* End of ExecutionRequete */
/****************************************************************************/
/*
* NOM: SqlError
*
* DESCRIPTION: Affiche le message d'erreur Oracle si besoin est.
*
* ENTREE(S): la chaine a afficher
*
* SORTIE(S) : void
*
* APPELEE PAR: ExecutionRequete
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
SqlError( char * msg)
{
/* This is the ORACLE error handler.
* Print diagnostic text containing error message,
* current SQL statement, and location of error.
*/
printf("%s\n", msg);
printf("\n%.*s\n",
sqlca.sqlerrm.sqlerrml, sqlca.sqlerrm.sqlerrmc);
/* printf("in \"%.*s...\"\n", */
/* oraca.orastxt.orastxtl, oraca.orastxt.orastxtc); */
/* printf("on line %d of %.*s.\n\n", */
/* oraca.oraslnr, oraca.orasfnm.orasfnml, */
/* oraca.orasfnm.orasfnmc); */
/* Disable ORACLE error checking to avoid an infinite loop
* should another error occur within this routine.
*/
EXEC SQL WHENEVER SQLERROR CONTINUE;
/* Roll back any pending changes and
* disconnect from Oracle.
*/
EXEC SQL ROLLBACK RELEASE;
exit(EXIT_FAILURE);
} /* End of SqlError */
/****************************************************************************/
/*
* NOM: PasDeReponse
*
* DESCRIPTION: Affiche un message en fin de parcours de la requete
*
* ENTREE(S): void
*
* SORTIE(S) : void
*
* APPELEE PAR: ExecutionRequete
*
* AUTEUR: FAURE David, Equipe Inference et Apprentissage, LRI Orsay.
*/
static void
PasDeReponse( void )
{
if( sqlca.sqlerrd[2] == 0 )
printf("Aucune reponse \n");
Pas_Trouve = VRAI;
} /* End of PasDeReponse */
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question