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

  1. alex
     
    j ai un exemple de fichier pro C

    je le ramene demain et je te l envoie
    :-)
    0
  2. Chacal_ito
     
    oue cool, je te file mon mail :
    chacal_ito@caramail.com
    merci d'avance ;)
    0
  3. 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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question