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

Java Discussion :

Récupère les noms de tables de même base de données


Sujet :

Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 126
    Points : 46
    Points
    46
    Par défaut Récupère les noms de tables de même base de données
    salut

    je me demande si il est possible de récupère les noms du tables dans une même base de données ...c 'est à dire dans ma base de données il y a 3 tables par exemple je veux récupère ces noms pour le mettre dans un jcombobox

    j'ai essayé ce code mais il ne marche pas message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

    Class main :
    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
     
    if (src== Btheme)
    {
        try{
          MaConn conn=new MaConn();
          conn.connecter("jdbc:odbc:Te"); 
          DatabaseMetaData dbmd = conn.getMetaData();
          ResultSet rs = dbmd.getTables(conn.getCatalog(),null,"%", types);
         ResultSetMetaData rsmd = rs.getMetaData();
     
         int cols = rsmd.getColumnCount();
     
          while(rs.next()) {
             for (int i = 1; i <= cols; i++) {
               System.out.println(rs.getString(i));
            }
          }
    }//try
    catch(ClassNotFoundException a){
                 a.printStackTrace();
               }
                   catch (SQLException ex) {
                     ex.printStackTrace();
                   }
           }//if src
    Class MaConn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    private static DatabaseMetaData rs;
      String catalog;
        DatabaseMetaData getMetaData()throws UnsupportedOperationException {
            //throw new UnsupportedOperationException("Not yet implemented");
          return rs;  
        }
     
        public String getCatalog() throws SQLException 
     
    {
      catalog =  con.getCatalog();
        return catalog;
    }
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    a quelle ligne a lieu l'exception, quelle est le stacktrace?

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 126
    Points : 46
    Points
    46
    Par défaut
    merci

    je pense ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ResultSet rs = dbmd.getTables(conn.getCatalog(),null,"%", types);
    j'ai utlisé un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("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
     
    erreur
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    	at Test.actionPerformed(Test.java:99)
    	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
    	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
    	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    	at java.awt.Component.processMouseEvent(Component.java:6288)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
    	at java.awt.Component.processEvent(Component.java:6053)
    	at java.awt.Container.processEvent(Container.java:2041)
    	at java.awt.Component.dispatchEventImpl(Component.java:4651)
    	at java.awt.Container.dispatchEventImpl(Container.java:2099)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
    	at java.awt.Container.dispatchEventImpl(Container.java:2085)
    	at java.awt.Window.dispatchEventImpl(Window.java:2478)
    	at java.awt.Component.dispatchEvent(Component.java:4481)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
    	at java.awt.EventQueue.access$000(EventQueue.java:84)
    	at java.awt.EventQueue$1.run(EventQueue.java:602)
    	at java.awt.EventQueue$1.run(EventQueue.java:600)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
    	at java.awt.EventQueue$2.run(EventQueue.java:616)
    	at java.awt.EventQueue$2.run(EventQueue.java:614)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    BUILD SUCCESSFUL (total time: 7 seconds)

  4. #4
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par pikamo Voir le message
    je pense ici :
    Tu penses ? Ca correspond à la ligne 99 du fichier Test.java ? Si oui, c'est celle la. Sinon, s'en est une autre et il faudra la poster.
    Mais si c'est la bonne ligne, alors ca veut dire que "dbmd" est null. C'est donc la fonction getMetaData qui renvoie null. Ce qui est logique puisque d'apres le code posté, celle-ci renvoie rs qui n'est jamais positionné. Et si c'est juste que le code qui la positionne n'a pas été posté, alors ca veut dire qu'il la met à null.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Points : 532
    Points
    532
    Par défaut
    Sinon, tu execute la requete show tables

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    la javadoc ne mentionne pas que getmetadata puisse renvoyer null :/

    Maintenant, le pont jdbc / odbc n'a pas la réputation d'être la meilleur implémentation de jdbc existante.

  7. #7
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    la javadoc ne mentionne pas que getmetadata puisse renvoyer null :/
    D'apres le code posté, la fonction getmetadata est redefinie. Elle appartient à la classe MaConn

  8. #8
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 126
    Points : 46
    Points
    46
    Par défaut
    salut,
    merci à tous

    Je pense que j'ai pas exprimé bien mon problème...

    Mon problème était (car il est résolu)c'est de récupère les noms du tables dans une même base de données ...c 'est à dire dans ma base de données il y a 3 tables je veux récupère ces noms pour les mettre dans un jcombobox

    alors l'idée est de faire un table (prenant le nom Tables) qui a un champ le nom de tout le table de ma base de donnée et récupère le champ nom de ce table dans le jcombobox

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La pluspart des sgbd on déjà ce genre de table en interne, pas besoin de la créer.


    show table sur mysql

    user_objects sous oracle

    etc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/11/2008, 07h33
  2. Lister les noms des tables d'une base access
    Par chefinf dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 10/07/2008, 18h34
  3. Afficher les nom des tables d'une base de donnée
    Par newmar dans le forum Administration
    Réponses: 4
    Dernier message: 02/04/2008, 16h40
  4. Lister les noms de table d'une base Access
    Par fikou dans le forum VB.NET
    Réponses: 6
    Dernier message: 29/08/2007, 10h48
  5. [SqlServer 2000] Comment lister les noms de table de ma base de données ?
    Par karima1972 dans le forum Accès aux données
    Réponses: 6
    Dernier message: 21/02/2007, 15h26

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