Pb en C

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

5 réponses

alex
 
j ai un exemple de fichier pro C

je le ramene demain et je te l envoie
:-)
0
Chacal_ito
 
oue cool, je te file mon mail :
chacal_ito@caramail.com
merci d'avance ;)
0
alex
 
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+
:-)
0
alex
 
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 */
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Chacal_ito
 
Merci alex ;)
0