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

Linux Discussion :

Problème de connection à une BDD


Sujet :

Linux

  1. #1
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut Problème de connection à une BDD
    bonjour ,
    je suis sur linux
    je suis débutante en C , mais j'ai vraiment besoin de me connecter à une BDD via odbc à partir d'un programme en c.


    j'ai trouvé des exemples de codes ;
    en voilà 1 que j'ai trouvé ici sur le forum : http://www.developpez.net/forums/sho...?p=381#post381
    Citation Envoyé par Anonymous

    # include <windows.h>
    # include <stdio.h>
    # include <sql.h>
    # include <sqlext.h>

    static void geterror( HSTMT );

    #define RC_SUCCESS(rc) (((rc)==SQL_SUCCESS) || ((rc) == SQL_SUCCESS_WITH_INFO))

    /* env et connection */
    SQLHENV Henv ;
    SQLHDBC Hdbc ;


    char req0[] = "select A.IDENTITYCOL from X3.ZZBLOB A where A. NUM_0 = 1" ;


    main () {

    /* Declaration */
    RETCODE rc ;
    SQLHSTMT hStmt0 ;


    /* variable de retours Bind */
    SQLINTEGER pcb[1] ;
    SQLINTEGER id ;


    /* ************************************ */
    /* Environement et connection */

    rc = SQLAllocHandle(SQL_HANDLE_ENV, NULL, &Henv);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLSetEnvAttr(Henv, SQL_ATTR_ODBC_VERSION,
    (SQLPOINTER) SQL_OV_ODBC3, SQL_IS_INTEGER);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLAllocHandle(SQL_HANDLE_DBC, Henv, &Hdbc);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLConnect(Hdbc, "HERCULE2000", SQL_NTS, "X3", SQL_NTS, "tiger", SQL_NTS);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLSetConnectAttr(Hdbc, SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF, SQL_IS_UINTEGER);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLSetConnectAttr(Hdbc, SQL_ATTR_TXN_ISOLATION,
    (SQLPOINTER) SQL_TXN_READ_COMMITTED, SQL_IS_UINTEGER);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLEndTran( SQL_HANDLE_DBC, Hdbc, SQL_COMMIT ) ;
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;


    /* ************************************* */

    rc = SQLAllocHandle(SQL_HANDLE_STMT, Hdbc, &hStmt0);
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    rc = SQLPrepare( hStmt0, req0, SQL_NTS ) ;
    if (!RC_SUCCESS( rc ))
    geterror( hStmt0 ) ;

    rc = SQLBindCol( hStmt0, 1, SQL_C_SLONG, &id, 0, pcb );
    if (!RC_SUCCESS( rc ))
    geterror( hStmt0 ) ;

    rc = SQLExecute( hStmt0 ) ;
    if (!RC_SUCCESS( rc ))
    geterror( hStmt0 ) ;

    rc = SQLFetch( hStmt0 ) ;
    if (!RC_SUCCESS( rc ))
    geterror( hStmt0 ) ;

    rc = SQLFreeHandle(SQL_HANDLE_STMT, hStmt0);
    if (!RC_SUCCESS( rc ))
    geterror( hStmt0 ) ;

    /* ************************************* */
    /* Deconnection */
    rc = SQLEndTran( SQL_HANDLE_DBC, Hdbc, SQL_COMMIT ) ;
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    /* ********************************** */
    /* c'est fini ! Free stmt */

    rc = SQLDisconnect( Hdbc );
    if (!RC_SUCCESS( rc ))
    geterror( SQL_NULL_HSTMT ) ;

    SQLFreeHandle(SQL_HANDLE_DBC, Hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV, Henv);
    return( 0 ) ;
    }



    static void geterror( HSTMT hStmt )
    {
    char msg[256] ; /* pointer to message */
    RETCODE rc; /* code erreur retour */
    char szSqlState[6]; /* etat de retour */
    long noError; /* no de message */
    short cbmsg;

    rc = SQLError(Henv, Hdbc, hStmt, szSqlState, &noError, msg, 256, &cbmsg);
    printf( msg ) ;

    exit( 0 );
    }
    Mon pb :
    Quand j'essaye de compiler je reçois les erreurs suivantes :
    exemple.c:2:25: windows.h : Aucun fichier ou répertoire de ce type
    exemple.c:4:21: sql.h : Aucun fichier ou répertoire de ce type
    exemple.c:5:24: sqlext.h : Aucun fichier ou répertoire de ce type
    exemple.c:7: attention : noms de paramètres (sans type) dans la déclaration de fonction
    exemple.c:12: erreur: erreur de syntaxe avant « Henv »
    exemple.c:12: attention : la définition de données n'a pas de type ni de classe de stockage
    exemple.c:13: erreur: erreur de syntaxe avant « Hdbc »
    exemple.c:13: attention : la définition de données n'a pas de type ni de classe de stockage
    exemple.c: In function `main':
    exemple.c:22: erreur: « RETCODE » non déclaré (première utilisation dans cette fonction)
    exemple.c:22: erreur: (Chaque identificateur non déclaré est rapporté une seule fois
    exemple.c:22: erreur: pour chaque fonction dans laquelle il apparaît.)
    exemple.c:22: erreur: erreur de syntaxe avant « rc »
    exemple.c:23: erreur: « SQLHSTMT » non déclaré (première utilisation dans cette fonction)
    exemple.c:27: erreur: « SQLINTEGER » non déclaré (première utilisation dans cette fonction)
    exemple.c:34: erreur: « rc » non déclaré (première utilisation dans cette fonction)
    exemple.c:34: erreur: « SQL_HANDLE_ENV » non déclaré (première utilisation dans cette fonction)
    exemple.c:35: erreur: « SQL_SUCCESS » non déclaré (première utilisation dans cette fonction)
    exemple.c:35: erreur: « SQL_SUCCESS_WITH_INFO » non déclaré (première utilisation dans cette fonction)
    exemple.c:36: erreur: « SQL_NULL_HSTMT » non déclaré (première utilisation dans cette fonction)
    exemple.c:38: erreur: « SQL_ATTR_ODBC_VERSION » non déclaré (première utilisation dans cette fonction)
    il ne reconnait pas plein de bibliothèques sql.h , sqlext.h , ...
    je ne sais pas comment ajouter ces bibliothèques ou comment vérifier s'il existent

    qqun peut me guider svp

  2. #2
    Membre actif
    Inscrit en
    Juillet 2003
    Messages
    407
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 407
    Points : 252
    Points
    252
    Par défaut
    oups ! quelle réponse !
    merci quand meme !
    je n'ai aucun pb sur linux lui même (si tu en as besoin je pourrais peut etre t'aider)
    sinon bien sure que j'ai supprimer la ligne # include <windows.h>
    il ya un pbs avec les autres librairies

  3. #3
    Membre éclairé
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Points : 785
    Points
    785
    Par défaut
    ????

    1) déjà pour te connecter via odbc depuis linux, il te faut unixodbc.
    2) j'ai l'impression que tu as fait un gros copier/coller d'un source que tu as trouvé.
    il faut que tu saches tu essaies d'employer des headers Win32 alors que tu es sous Linux

Discussions similaires

  1. [MySQL] Faut il fermé les connections a une BDD?
    Par Death83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/01/2006, 13h38
  2. [VB.Net] Problème de connection à une BDD
    Par Catalan dans le forum ASP.NET
    Réponses: 22
    Dernier message: 03/10/2005, 15h29
  3. Se connecter a une bdd dbase
    Par Harry dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/12/2004, 19h38
  4. [Mysql] Connection delphi à une bdd sous easyphp...
    Par pataluc dans le forum Bases de données
    Réponses: 2
    Dernier message: 14/06/2004, 09h07
  5. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18

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