Pb en C

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

  1. j ai un exemple de fichier pro C

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