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

Administration Oracle Discussion :

Oracle 9.2.0 et RedHat 3 : lecture d'une base via DSN et ODBC


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut Oracle 9.2.0 et RedHat 3 : lecture d'une base via DSN et ODBC
    Bonjour à tous.

    Je souhaite accéder à une base access sur un PC Linux en Red Hat 3. Sur ce PC, il y a donc mon fichier *.mdb et Oracle version 9.2.0

    Après plusieurs petites recherches, j'ai trouvé le bon driver pour lire mon fichier *.mdb (j'ai choisi libmdbodbc.so).

    J'ai ensuite fouillé sur internet pour trouver un peu d'aide.

    J'ai bien créé mon DSN, dont voici les détails :

    Pour mon fichier odbcinst.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [MicrosoftAccess]
    Description	= ODBC for Microsoft Access
    Driver		= /usr/lib/libmdbodbc.so
    Setup		= /usr/lib/libmdbodbc.so
    FileUsage	= 1
    et pour mon fichier odbc.ini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [DSN]
    Description		= MicrosoftAccess Base
    Driver		= MicrosoftAccess
    Database = /home/users/data/mestests/base.mdb
    Servername = localhost
    Donc bon, j'essaie de voir si mon DSN est bien configuré, OpenOffice.org le voit, j'me dis : "Chouette, ça doit être bon !"

    Ben non, c'est pas fini. Parce que je dois aller lire ma base par programmation...

    Donc je me dis, essayons les "heterogeneous services" d'Oracle, ça doit être bien tout ça.

    Donc je configure mes p'tits fichiers qui vont bien.
    Mon fichier "inithsdsn.ora" localisé dans $ORACLE_HOME/admin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    HS_FDS_CONNECT_INFO = DSN
    HS_FDS_TRACE_LEVEL = 0
    HS_DB_NAME = hsdsn
    HS_FDS_SHAREABLE_NAME = /usr/lib/libmdbodbc.so
    Mon fichier "listener.ora" placé dans $ORACLE_HOME/network/admin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     SID_LIST_LISTENER=
       (SID_LIST=
           (SID_DESC=
    	  (PROGRAM=hsodbc)
    	  (SID_NAME=DSN)		       
    	  (ORACLE_HOME=/home/oracle/product/9.2.0)
    	)
       )
    et mon fichier "tnsnames.ora" placé aussi dans $ORACLE_HOME/network/admin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    hsdsn  =
      (DESCRIPTION=
        (ADDRESS=
        	(PROTOCOL=tcp)
    	(HOST=localhost)
    	(PORT=1521)
        )
        (CONNECT_DATA=
        	(SERVICE_NAME=DSN)
        )
        (HS=OK)
      )
    Une fois tout ça effectué, je suis contente normalement. J'me dis, ça devrait marcher...

    Bon je mets les droits sur le fichier "listener.log" sinon ça marche pas.

    Et là, je vois aucun service quand je lance la commande "lsnrctl start".

    Voilà ce que j'obtiens (oh joie!) :
    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
    LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 07-MAY-2007 13:54:43
     
    Copyright (c) 1991, 2002, Oracle Corporation.  All rights reserved.
     
    Starting /home/oracle/product/9.2.0/bin/tnslsnr: please wait...
     
    TNSLSNR for Linux: Version 9.2.0.4.0 - Production
    System parameter file is /home/oracle/product/9.2.0/network/admin/listener.ora
    Log messages written to /home/oracle/product/9.2.0/network/log/listener.log
    Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
     
    Connecting to (ADDRESS=(PROTOCOL=tcp)(PORT=1521))
    STATUS of the LISTENER
    ------------------------
    Alias                     LISTENER
    Version                   TNSLSNR for Linux: Version 9.2.0.4.0 - Production
    Start Date                07-MAY-2007 13:54:43
    Uptime                    0 days 0 hr. 0 min. 0 sec
    Trace Level               off
    Security                  OFF
    SNMP                      OFF
    Listener Parameter File   /home/oracle/product/9.2.0/network/admin/listener.ora
    Listener Log File         /home/oracle/product/9.2.0/network/log/listener.log
    Listening Endpoints Summary...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1521)))
    The listener supports no services
    The command completed successfully


    Bon alors qu'est-ce que j'ai mal fait ? Comment je peux créer le lien entre ma base de données access base.mdb et ce truc ? Comment je peux faire des requêtes là-dedans ?

    Please, help me !

  2. #2
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 127
    Points : 1 954
    Points
    1 954
    Par défaut
    = 127.0.0.1
    Ce qui veut dire que le serveur oracle , n'est pas configuré pour travailler en réseau.
    Ne pas savoir n’est pas une faute si l’on cherche à combler ses lacunes.

    "Il n'y a pas d'obstacles infranchissables , il y a des volontés plus ou moins énergiques voilà tous" Jules Vernes

  3. #3
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 127
    Points : 1 954
    Points
    1 954
    Par défaut
    a propos , puisque tu utilise mdbtool , pour ta connexion ODBC sur access , tu a fais le post install de mdbtools ?????

    http://mdbtools.sourceforge.net/install/c260.htm
    Ne pas savoir n’est pas une faute si l’on cherche à combler ses lacunes.

    "Il n'y a pas d'obstacles infranchissables , il y a des volontés plus ou moins énergiques voilà tous" Jules Vernes

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Je n'utilise pas de script pour le lancer. Donc je n'ai pas besoin (à mon avis).

    Ah oui, Oracle n'est pas pour le réseau, possible. Mais puisque je transfère avant de lancer mon truc le fichier *.mdb sur le PC Linux, plus besoin du réseau (ouf). Va d'ailleurs falloir que je me penche sur la question de lancer la commande "smbclient" et le programme à la file en automatique (via un shell peut-être ? Mais je sais pas faire... )

    Je suis finalement passée par mon DSN en direct (mon idée première) sans utiliser les heteregenous services.

    J'ai utilisé la librairie "libodbc.so". J'ai écrit (enfin, pris sur le net) un p'tit programme dont voici le code :

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    /* odbc.c
     
        testing unixODBC
    */
    #include <stdlib.h>
    #include <stdio.h>
    #include <sql.h>
    #include <sqlext.h>
    #include <sqltypes.h>
     
    SQLHENV			 V_OD_Env;     // Handle ODBC environment
    long			 V_OD_erg;     // result of functions
    SQLHDBC			 V_OD_hdbc;    // Handle connection
     
    char			 V_OD_stat[10]; // Status SQL
    SQLINTEGER		 V_OD_err,V_OD_rowanz,V_OD_id;
    SQLSMALLINT		 V_OD_mlen;
    char             V_OD_msg[200],V_OD_buffer[200];
     
    // Variable for queries
    SQLHSTMT V_OD_hstmt;    // Handle for a statement
     
     
    void OD_ListDSN(void)
    {
     char       l_dsn[100],l_desc[100];
     short int  l_len1,l_len2,l_next;
     
     // Add cvc
     printf("...........Listing DSN\n");
     
     l_next=SQL_FETCH_FIRST_SYSTEM;
     while( SQLDataSources(V_OD_Env,l_next,l_dsn, sizeof(l_dsn),
            &l_len1, l_desc, sizeof(l_desc), &l_len2) == SQL_SUCCESS)
         {
          printf("Server=(%s) Description=(%s)\n",l_dsn,l_desc);
          l_next=SQL_FETCH_NEXT;
         }
     // Add cvc
     printf("........End of Listing\n");
    }
     
     
    int main()
    {
    	// 1. allocate Environment handle and register version 
    	V_OD_erg=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env);
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error AllocHandle\n");
    		exit(0);
    	}
    	else printf("AllocHandle.........OK\n");
    	V_OD_erg=SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, 
                                   (void*)SQL_OV_ODBC3, 0); 
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error SetEnv\n");
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	else printf("SetEnv..............OK\n");
     
    	// 2. allocate connection handle, set timeout
    	V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc); 
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error AllocHDB %d\n",V_OD_erg);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	else printf("AllocHDB............OK\n");
    	SQLSetConnectAttr(V_OD_hdbc, SQL_LOGIN_TIMEOUT,
    	(SQLPOINTER *)5, 0);
     
    	// List the DSNs
    	OD_ListDSN();
     
    	// 3. Connect to the datasource "DSN" 
    	V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "DSN", SQL_NTS,
                                         (SQLCHAR*) "", SQL_NTS,
                                         (SQLCHAR*) "", SQL_NTS);
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error SQLConnect %d\n",V_OD_erg);
    		SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, 
    		              V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen);
    		printf("%s (%d)\n",V_OD_msg,V_OD_err);
    		SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	printf("Connection..........OK\n");
     
     
    }
    J'arrive bien à me connecter à mon DSN, donc c'est chouette.

    J'ai ajouté un bout de code pour faire des demandes à ma base :
    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
    	// 4. Test of one querie
    	V_OD_erg = SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR,&V_OD_buffer,200,&V_OD_err);
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error SQLBind First Column %d\n",V_OD_erg);
    		SQLDisconnect(V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	else printf("SQLBind1............OK\n");
    	V_OD_erg = SQLBindCol(V_OD_hstmt,1,SQL_C_ULONG,&V_OD_id,sizeof(V_OD_id),&V_OD_err);
    		if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error SQLBind Second Column %d\n",V_OD_erg);
    		SQLDisconnect(V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	else printf("SQLBind2............OK\n");
     
    	V_OD_erg = SQLExecDirect(V_OD_hstmt,"SELECT B_TYPE FROM,B_NET_KEY B_NET_OBJS",SQL_NTS);
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error Select %d\n",V_OD_erg);
    		SQLGetDiagRec(SQL_HANDLE_STMT, V_OD_hstmt,1, 
    		              V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen);
    		printf("%s (%d)\n",V_OD_msg,V_OD_err);
    		SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
    		SQLDisconnect(V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    Et c'est là que ça coince, parce qu'à la compilation il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    cc -ggdb -I /opt/sdb/interfaces/odbc/incl  -L /opt/sdb/interfaces/odbc/lib  -l odbc -o test_dsn test_dsn.c
    test_dsn.c: Dans la fonction « main »:
    test_dsn.c:96: AVERTISSEMENT: passage de arg 6 de « SQLBindCol » d'un type pointeur incompatible
    test_dsn.c:106: AVERTISSEMENT: passage de arg 6 de « SQLBindCol » d'un type pointeur incompatible
    Donc forcément... pas moyen de faire ma demande à la base de données.

    Ce qui est quand même très problématique.

    Et comme je ne connais pas très bien cette librairie (forcément) et bien, je n'arrive pas à débugger.

    Mais je vais trouver (enfin j'espère). Si quelqu'un a une idée.

    En tout cas, merci beaucoup pour ta réponse

  5. #5
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 127
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par Lucinda
    Je n'utilise pas de script pour le lancer. Donc je n'ai pas besoin (à mon avis).
    si tu parle de la variable MDBPATH
    bahh , si il faut que cette variable existe dans le shell du linux

    Citation Envoyé par Lucinda
    Ah oui, Oracle n'est pas pour le réseau, possible. Mais puisque je transfère avant de lancer mon truc le fichier *.mdb sur le PC Linux, plus besoin du réseau (ouf).
    baaahhhh si Oracle c'est surtout pour le réseaux .
    Mais je n'ai peut etre pas tous compris !!
    la base de donnée access et sur le meme serveur que Oracle ?????
    C'est a dire : linux !!!
    c'est ça ?????

    Citation Envoyé par Lucinda
    J'arrive bien à me connecter à mon DSN, donc c'est chouette.
    et tu voie les données ?????
    Ne pas savoir n’est pas une faute si l’on cherche à combler ses lacunes.

    "Il n'y a pas d'obstacles infranchissables , il y a des volontés plus ou moins énergiques voilà tous" Jules Vernes

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bon, alors il faut que je définisse MDBPATH, peut-être que ça aidera. J'vais étudier ça plus en profondeur.

    Cependant, je n'utilse pas réellement MDBTools, j'utilise surtout le driver qui lui est associé (sinon je ne pourrais pas lire ma base Access).

    Sinon, oui, la base access est sur le même serveur que Oracle, qui est bien Linux Red Hat 3. Mais j'ai décidé de ne plus passer par Oracle (pour cause de conflit avec une configuration pré-existante). Je me contente d'utiliser le DSN défini (ainsi que le driver, à l'aide des fichiers odbcinst.ini et odbc.ini).

    Et pour faire ça, j'utilise le programme cité auparavent (écrit en C).

    Disons que je vois bien mon DSN (il est listé correctement), qu'il s'y connecte bien, mais que je n'arrive pas à voir les tables... Tout comme sous OpenOffice.org d'ailleurs. J'ai essayé avec le module 'base', et rien n'y fait. Je vois bien mon DSN, qui est censé ouvrir la base, mais je ne vois pas les tables sous OpenOffice.org

    J'avais lu quelque part que MDBTools ne gérait pas les "_". Donc j'ai créé une base test toute simple sans aucun "_", mais ça marche pas plus. Je me connecte bien à mon DSN, mais je ne vois pas les tables.


    J'ai utilisé dans mon programme en C la fonction "SQLTables" qui est censé me lister les tables, mais j'obtiens une erreur.

    Le bout de code que j'ai remplacé (au lieu des "SQLBindCol") :
    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
    V_OD_erg = SQLAllocHandle(SQL_HANDLE_STMT,V_OD_hdbc,&V_OD_hstmt);
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error SQLBind First Column %d\n",V_OD_erg);
    		SQLDisconnect(V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	else printf("AllocStmt...........OK\n");
     
     
    	// Liste... test
    	V_OD_erg = SQLTables(V_OD_hstmt,NULL,0,NULL,0,NULL,0,NULL,0);
    	if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
    	{
    		printf("Error Tables %d\n",V_OD_erg);
    		SQLGetDiagRec(SQL_HANDLE_STMT, V_OD_hstmt,1, 
    		              V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen);
    		printf("%s (%d)\n",V_OD_msg,V_OD_err);
    		SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
    		SQLDisconnect(V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    		SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    		exit(0);
    	}
    	SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
    	SQLDisconnect(V_OD_hdbc);
    	SQLFreeHandle(SQL_HANDLE_DBC, V_OD_hdbc);
    	SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
    Et voilà ce que mon "compte rendu" de programme me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    AllocHandle.........OK
    SetEnv..............OK
    AllocHDB............OK
    ...........Listing DSN
    Server=(SAMPLE) Driver Used=(MicrosoftAccess)
    Server=(DSN) Driver Used=(MicrosoftAccess)
    ........End of Listing
    Connection..........OK
    AllocStmt...........OK
    Error at Line : parse error near exec
    Error Tables -1
    [unixODBC]Couldn't parse SQL
     (1)

    En tout cas, merci beaucoup de ta réponse. Je vais voir pour le MDBPATH, et je te dirai si ça a changé quelque chose.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Bon j'ai essayé en définissant le MDBPATH, rien ne change... J'ai découvert la librairie <MDBTools.h>, mais alors, elle est pire que l'autre ! Il ne l'accepte pas à la compilation, pour lui il y a des erreurs alors bon...

  8. #8
    Membre chevronné Avatar de denisys
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    1 127
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 127
    Points : 1 954
    Points
    1 954
    Par défaut
    Je pense que tu devrais essayer avec mdbtools .
    a cette adresse tu a les packages au format rpm
    http://sourceforge.net/project/showf...?group_id=2294

    mdbtools-0.5-1.i386.rpm
    mdbtools-devel-0.5-1.i386.rpm
    mdbtools-gui-0.5-1.i386.rpm
    mdbtools-odbc-0.5-1.i386.rpm

    de maniere , qu'avec mdbtools-gui , tu puisse voire tes tables.
    A partire de là , je pense que tu pourras tester ton programme . Puisque tu auras installé
    mdbtools-devel
    Ne pas savoir n’est pas une faute si l’on cherche à combler ses lacunes.

    "Il n'y a pas d'obstacles infranchissables , il y a des volontés plus ou moins énergiques voilà tous" Jules Vernes

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    Malheureusement, il est déjà installé. Sinon, je n'arriverai même pas à me connecter au DSN puisque seul ce pack contient le bon driver pour les bases *.mdb. D'ailleurs j'ai fait référence à la librairie <MDBTools.h> qui est dans ce pack Sauf qu'elle contient des bugs... j'arrive même pas à la compiler. Ou alors, j'ai oublié de faire un truc au moment de l'install, mais je crois pas.

    L'interface graphique fonctionne bien. Je sais déjà qu'il faut que ma base soit dans la version originale (et pas version 2003, sinon il y a des bugs). Donc ça c'est bon.

    J'arrive bien à chopper mes tables par l'interface graphique, mais pas par mon programme. Et pour cause de toute façon : MDBTools ne passe pas du tout par ODBC + DSN ....

    Mais alors pourquoi moi je n'y arrive pas ?

  10. #10
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 28
    Points : 16
    Points
    16
    Par défaut
    YOUPI !!!!!!!!!!!


    Alors ça, c'est que du bonheur ^^ J'ai enfin réussi à voir mes tables

    Reste à apprendre comment trouver les données que je veux, etc etc.

    J'vais chercher ^^

    Le p'tit programme miracle, quand même :
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <mdbtools.h>
    #include <mdbsql.h>
     
    MdbSQL *sql;
    char * filename="/home/users/data/sample.MDB";
     
    main()
    {
    	sql = mdb_sql_init();
    	mdb_sql_open(sql,filename);
    	mdb_sql_listtables(sql);
    	mdb_sql_exit(sql);
    }

Discussions similaires

  1. [C#]Lecture d'une base de donnée
    Par crawling5 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 11/04/2006, 17h53
  2. [VB]Lecture dans une base de donnée posant problème
    Par polo-j dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 23/03/2006, 00h16
  3. lecture d'une base SQL
    Par TOPGUN89 dans le forum JBuilder
    Réponses: 1
    Dernier message: 23/11/2005, 14h27
  4. Lenteur lors de la lecture d'une base Access
    Par Lio590 dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/11/2005, 12h24
  5. Réponses: 3
    Dernier message: 13/12/2004, 13h54

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