IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

MySQL, EasyPHP, ODBC et C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut MySQL, EasyPHP, ODBC et C
    Salut,

    - J'ai décidé de travailler avec easyphp puisque plus facile à créer des bases des données par rapport à Mysql server 5.0 qui fait ceci par lignes des commandes.
    je ne sais pas c'est ceci est bon ou non ?

    - Je ne sais pas pourquoi je trouve seulement le dossier bin sous
    C:\Program Files\EasyPHP1-7\mysql

    alors il n' y pas le dosssier lib et include ?

    Si je veux ajouter des bases des données alors où je vais les mettre
    sous:
    C:\Program Files\EasyPHP1-7\mysql\data
    C:\Program Files\EasyPHP1-7\mysql\share
    ou autre
    ?

    - mon objectif est de connecter à une base de donnée mysql à partir d'un programme C. Pour cela j'ai installé le connecteur ODBC.

    Je ne sais pas avec quel outil je vais programmer mon programme C et quelle configuration à faire dans mon projet pour arriver à connecter à base de données puisque chaque outil à ses caractéristiques ?

    J'ai essayé un petit programme de calcul somme et produit alors j'ai trouvé que avec visual studio est plus vite que code bloks avec quelques ms.

    C'est urgent:

    Je voudrais connecter à une base de données Mysql via ODBC à partir d'un programme C pour cela :

    - quel outil de programmation C sous windows à utiliser permettant le moins temps d'exécution ?
    - Après le choix de l'outil, il suffit de faire une configuration odbc au serveur Mysql pour se connecter à une base des données à partir d'un programme C il n'y pas une configuration à faire dans le projet de travail ?


    SVP, le temps passe mais j'ai rien fait. je trouve toute seul.

    je serais très très contente pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    J'ai décidé de travailler avec easyphp puisque plus facile à créer des bases des données par rapport à Mysql server 5.0 qui fait ceci par lignes des commandes.
    je ne sais pas c'est ceci est bon ou non ?
    C'est vrai que pour débuter, MySQL est à préférer à SQL Server notamment grâce à l'existence d'interfaces simples tels que PHPMyAdmin, livré entre autres avec EasyPHP, qui facilitent énormément son utilisation.

    Je ne sais pas pourquoi je trouve seulement le dossier bin sous
    C:\Program Files\EasyPHP1-7\mysql

    alors il n' y pas le dosssier lib et include ?
    Parce que les dossier lib et include, plus précisément les fichiers qu'ils devraient contenir, ne sont pas requis pour faire fonctionner MySQL. Ils sont juste utiles pour ceux qui souhaitent s'interfacer avec via un programme C ou C++ (je ne suis pas sûr pour C++). Tu pourras télécharger ces fichiers sur le site officiel du logiciel et peut-être aussi ailleurs.

    Si je veux ajouter des bases des données alors où je vais les mettre
    sous:
    C:\Program Files\EasyPHP1-7\mysql\data
    C:\Program Files\EasyPHP1-7\mysql\share
    ou autre ?
    Tu veux bidouiller tu veux dire. Si tu veux ajouter des bases de données, lance PHPMyAdmin ou n'importe quel autre client MySQL. Tu n'es pas censé savoir où sont stockés les bases de données. Si tu veux importer une base de données, utilise le menu associé.

    Pour les questions spécifiques à EasyPHP, il y a le forum EasyPHP.

    - mon objectif est de connecter à une base de donnée mysql à partir d'un programme C. Pour cela j'ai installé le connecteur ODBC.

    Je ne sais pas avec quel outil je vais programmer mon programme C et quelle configuration à faire dans mon projet pour arriver à connecter à base de données puisque chaque outil à ses caractéristiques ?

    J'ai essayé un petit programme de calcul somme et produit alors j'ai trouvé que avec visual studio est plus vite que code bloks avec quelques ms.

    C'est urgent:

    Je voudrais connecter à une base de données Mysql via ODBC à partir d'un programme C pour cela :

    - quel outil de programmation C sous windows à utiliser permettant le moins temps d'exécution ?
    - Après le choix de l'outil, il suffit de faire une configuration odbc au serveur Mysql pour se connecter à une base des données à partir d'un programme C il n'y pas une configuration à faire dans le projet de travail ?
    Pour l'outil, pratiquement n'importe quel compilateur capable de produire des exécutables Windows (Visual, GCC, Borland C, etc.). Visual Studio est sans aucun doute le meilleur choix.

    Une fois la source de données créée (à l'aide du connecteur ODBC), tu peux te lancer dans la programmation de ton application :

    - Crée un projet d'application console
    - Ouvre la boîte de dialogue Project > Settings et dans Linker > Input > Additional Dependencies, ajoute odbc32.lib.
    - Tape ton code

    N'hésite pas à poser des questions s'il y a quelque chose que tu ne comprends encore pas.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut
    J'ai testé la source de données (ODBC) que j'ai ajouté avec la base de données. Ceci se passe bien.

    le nom de DSN est : toto
    le serveur: localhost
    le nom d'utilisateur : root
    le mot de passe est vide

    Mysql est bien démarré. J'ai testé la connexion entre le driver ODBC et ma base des données alors ceci se passe bien.

    J'ai testé le code suivant pour vérifier la connexion au base des données. Le serveur est déjà démarré. La compilation se passe bien.

    Après l'exécution, j'ai l'affichage suivant:

    retcode= -1
    Erreur sur l'instruction SQLConnect


    Le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include<stdlib.h>
    #include<string.h>
     
    #include <sql.h>
    #include <sqlext.h>
    #include <sqltypes.h>
     
    #include <sqlucode.h>
    #include <odbcinst.h>
    #include <Msdasql.h>
    #include <Msdadc.h>
     
     
    void main()
    {
        SQLRETURN retcode;
        //char design[20];
        //int A,B,C,D;
        //char request[100];
        //char dsn[20]="toto";
        //char uid[20]="root";
        //char pwd[20]="";
        SQLINTEGER lon,la,lb,lc,ld,taille=SQL_NTS;
        SQLCHAR design[20];
        SQLHDBC hdbc;
        SQLHENV henv;
        SQLHSTMT hstmt;
     
        /*Allocate environment handle */
     
        retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); 
     
        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
            /* Set the ODBC version environment attribute */
            retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION (void*)SQL_OV_ODBC3, 0);
     
        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) //{
            /* Allocate connection handle */
            retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
     
       // if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
     
        // printf("%s","vrai");
        // else
        // printf("erreur\n");
     
        //}
        //}
     
     
        // retcode = SQLConnect(hdbc,(SQLCHAR*)dsn, SQL_NTS,(SQLCHAR*)uid, SQL_NTS,(SQLCHAR*)pwd, SQL_NTS);
     
        retcode=SQLConnect(hdbc, (SQLCHAR *)"toto", SQL_NTS, (SQLCHAR *)"root", SQL_NTS, (SQLCHAR *)"", SQL_NTS);
        printf("%d",retcode);
     
        if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
            printf("\n%s","vrai");
        else
            printf("Erreur sur l'instruction SQLConnect !\\n");
    }
    Je dois travailler dans cet environnement: Windows, Visual Studio, C, Mysql et ODBC.

    Je serais très content pour vos aides.

    Merci.

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Affiche la cause de l'erreur avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql_perror(SQL_HANDLE_DBC, hdbc, "Impossible de se connecter a la source de donnees");
    Voici le code de sql_perror :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void sql_perror(SQLSMALLINT HandleType, SQLHANDLE Handle, const char * title)
    {
        SQLCHAR s[SQL_MAX_MESSAGE_LENGTH];
        SQLSMALLINT ligne = 1;
     
        fprintf(stderr, "%s :\n", title);
     
        while (SQLGetDiagField(HandleType, Handle, ligne, SQL_DIAG_MESSAGE_TEXT, s, sizeof(s), NULL) != SQL_NO_DATA)
        {
            fprintf(stderr, "%d. %s\n", ligne, s);
            ligne++;
        }
    }
    Poste le(s) message(s) d'erreur que tu obtiens.

  5. #5
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut
    Salut,

    Après l'exécution j'obtiens:

    retcode=-1
    Erreur sur l'instruction SQLConnect Impossible de se connecter a la source de donnees:
    1. [
    Appuyez sur une touche pour continuer...

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2009
    Messages
    392
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 392
    Par défaut
    Salut,

    - Qu'est ce que signifie ce message d'erreur ?:
    1. [

  7. #7
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Aucune idée. C'est bizarre tout cela. Essaie un peu le code ci-dessous et dis-moi s'il affiche un quelconque message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    #include <stdio.h>
    #include <windows.h>
    #include <sql.h>
    #include <sqlext.h>
     
    void sql_perror(SQLSMALLINT HandleType, SQLHANDLE Handle, const char * title);
     
    int main()
    {
        SQLHENV env;
     
        if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env)) )
            fprintf(stderr, "SQLAllocHandle (SQL_HANDLE_ENV) : la fonction a echoue.\n");
        else
        {
            if ( !SQL_SUCCEEDED(SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void *)SQL_OV_ODBC3, 0)) )
                sql_perror(SQL_HANDLE_ENV, env, "SQLSetEnvAttr");
            else
            {
                SQLHDBC con;
     
                if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC, env, &con)) )
                   sql_perror(SQL_HANDLE_ENV, env, "SQLAllocHandle (SQL_HANDLE_DBC)");
                else
                {
                    SQLCHAR in[] = "DRIVER=MySQL ODBC 5.1 Driver;UID=root";
     
                    if ( !SQL_SUCCEEDED(SQLDriverConnect(con, NULL, in, SQL_NTS, NULL, 0, NULL,
                    SQL_DRIVER_NOPROMPT)) )
                        sql_perror(SQL_HANDLE_DBC, con, "SQLDriverConnect");
                    else
                    {
                        printf("Connexion reussie !!!\n");
     
                        SQLDisconnect(con);
                    }
     
                    SQLFreeHandle(SQL_HANDLE_DBC, con);
                }
            }
     
            SQLFreeHandle(SQL_HANDLE_ENV, env);
        }
     
        return 0;
    }
     
    void sql_perror(SQLSMALLINT HandleType, SQLHANDLE Handle, const char * title)
    {
        SQLCHAR s[SQL_MAX_MESSAGE_LENGTH];
        SQLSMALLINT ligne = 1;
     
        fprintf(stderr, "%s :\n", title);
     
        while (SQLGetDiagField(HandleType, Handle, ligne, SQL_DIAG_MESSAGE_TEXT, s, sizeof(s), NULL) != SQL_NO_DATA)
        {
            fprintf(stderr, "%d. %s\n", ligne, s);
            ligne++;
        }
    }
    Ce code te connecte directement au serveur MySQL, sans passer par une source de données. Il suppose que tu utilises le connecteur MySQL 5.1 et que le compte root n'est associé à aucun mot de passe. Si ce n'est pas le cas, modifie la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQLCHAR in[] = "DRIVER=MySQL ODBC 5.1 Driver;UID=root";

Discussions similaires

  1. MYSQL et ODBC
    Par JMLD dans le forum Outils
    Réponses: 5
    Dernier message: 29/01/2008, 16h48
  2. [Problème technique] MySQL (EasyPHP)
    Par sorry60 dans le forum Administration
    Réponses: 6
    Dernier message: 01/05/2006, 17h28
  3. [VB.NET][MySQL]ID insertion dans une base MySQL par ODBC
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/03/2006, 10h58
  4. MySQL et ODBC
    Par troumad dans le forum Installation
    Réponses: 5
    Dernier message: 10/12/2005, 13h13
  5. MySql connector ODBC
    Par 12_darte_12 dans le forum Administration
    Réponses: 3
    Dernier message: 02/11/2005, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo