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

Composants Java Discussion :

Gérer JTable en Java


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut Gérer JTable en Java
    Bonjour,

    Avec le programme qui suit, je ne parviens pas à afficher les données, récupérées d'une base MySql, sous forme de tableau dans une JTable car l'affichage de ce programme est en mode console.

    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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    package com.objis.demojdbc;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class DemoJdbc
    {
        /**
         * @param args
         */
        public static void main(String[] args)
        {
            sauverEnBase("Jean");
            lireEnBase();
        }
     
        public static void sauverEnBase(String personne)
        {
            // Information d'accès à la base de données
            String url = "jdbc:mysql://localhost/formation";
            String login = "user1";
            String passwd = "user1";
            Connection cn = null;
            Statement st = null;
     
            try
            {
                // Etape 1 : Chargement du driver
                Class.forName("com.mysql.jdbc.Driver");
     
                // Etape 2 : récupération de la connexion
                cn = DriverManager.getConnection(url, login, passwd);
     
                // Etape 3 : Création d'un statement
                st = cn.createStatement();
     
                String sql = "INSERT INTO 'javadb' ('personne') VALUES ('" + personne + "')";
     
                // Etape 4 : exécution requête
                st.executeUpdate(sql);
     
                // Si récup données alors étapes 5 (parcours Resultset)
     
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
            catch (ClassNotFoundException e)
            {
                // TODO: handle exception
                e.printStackTrace();
            }
            finally
            {
                try
                {
                    // Etape 6 : libérer ressources de la mémoire.
                    cn.close();
                    st.close();
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }
     
        public static void lireEnBase()
        {
            // Information d'accès à la base de données
            String url = "jdbc:mysql://localhost/formation";
            String login = "user1";
            String passwd = "user1";
            Connection cn = null;
            Statement st = null;
            ResultSet rs = null;
     
            try
            {
                // Etape 1 : Chargement du driver
                Class.forName("com.mysql.jdbc.Driver");
     
                // Etape 2 : récupération de la connexion
                cn = DriverManager.getConnection(url, login, passwd);
     
                // Etape 3 : Création d'un statement
                st = cn.createStatement();
     
                String sql = "SELECT * FROM javadb";
     
                // Etape 4 : exécution requête
                rs = st.executeQuery(sql);
     
                // Si récup données alors étapes 5 (parcours Resultset)
     
                while (rs.next())
                {
                    System.out.println(rs.getString("personne"));
     
                }
            }
            catch (SQLException e)
            {
                e.printStackTrace();
            }
            catch (ClassNotFoundException e)
            {
                e.printStackTrace();
            }
            finally
            {
                try
                {
                    // Etape 6 : libérer ressources de la mémoire.
                    cn.close();
                    st.close();
                }
                catch (SQLException e)
                {
                    e.printStackTrace();
                }
            }
        }
    }
    Quelqu'un pourrait-il m'expliquer comment je peux faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Par défaut Reponse
    Bonjour,

    L'utilisation de l'objet ResultSet est particulière. Si vous désirez pouvoir le lire et vous déplacer dedans, il est necéssaire de le préciser avant de le récupérer en le précisant à votre objet Connection lors de l'appel à la méthode createStatement de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    ResultSet rs = stmt.executeQuery("SELECT a, b FROM TABLE2");
    // rs will be scrollable, will not show changes made by others,
    // and will be updatable
    Ce code est extrait des spécification de l'API java 1.6Update21 du JDK standard.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  3. #3
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       i=0;
    while (rs.next())
    {
            i++;
    ton_Jtable.setValueAt(rs.getString("personne"),i,num_colonne_personne);                 
    }

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 208
    Par défaut
    je modifier le code mais une erreur est apparue après l'exécution

    voila 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
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    package com.objis.demojdbc;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    public class DemoJdbc {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		sauverEnBase("Jean");
    		lireEnBase();
    	}
     
     
     
    	public static void sauverEnBase(String personne) {
     
    		// Information d'accès à la base de données
    		String url = "jdbc:mysql://localhost/formation";
    		String login = "user1";
    		String passwd = "user1";
    		Connection cn =null;
    		Statement st =null;
     
    		try {
     
    			// Etape 1 : Chargement du driver
    			Class.forName("com.mysql.jdbc.Driver");
     
    			// Etape 2 : récupération de la connexion
    			cn = DriverManager.getConnection(url, login, passwd);
     
    			// Etape 3 : Création d'un statement
    			st = cn.createStatement();
     
    			String sql = "INSERT INTO `javadb` (`personne`) VALUES ('"
    					+ personne + "')";
     
    			// Etape 4 : exécution requête
    			st.executeUpdate(sql);
     
    			// Si récup données alors étapes 5 (parcours Resultset)
     
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		} finally {
    			try {
    			// Etape 6 : libérer ressources de la mémoire.
    				cn.close();
    				st.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
     
     
     
    	public static void lireEnBase() {
     
    		// Information d'accès à la base de données
    		String url = "jdbc:mysql://localhost/formation";
    		String login = "user1";
    		String passwd = "user1";
    		Connection cn =null;
    		Statement st =null;
    		ResultSet rs =null;
     
    		try {
     
    			// Etape 1 : Chargement du driver
    			Class.forName("com.mysql.jdbc.Driver");
     
    			// Etape 2 : récupération de la connexion
    			cn = DriverManager.getConnection(url, login, passwd);
     
    			// Etape 3 : Création d'un statement
    			st = cn.createStatement();
     
    			String sql = "SELECT * FROM javadb";
     
    			// Etape 4 : exécution requête
    			rs = st.executeQuery(sql);
     
    			// Si récup données alors étapes 5 (parcours Resultset)
     
    			   int i=0;
    			   while (rs.next())
    			   {
    			           i++;
    			   ton_Jtable.setValueAt(rs.getString("personne"),i,num_colonne_personne);                 
    			   }
     
     
     
     
     
     
    		} catch (SQLException e) {
    			e.printStackTrace();
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    			// Etape 6 : libérer ressources de la mémoire.
    				cn.close();
    				st.close();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    		}
    	}
     
     
     
     
    }


    l'erreur est la suivante

    ton_Jtable cannot be resolved
    num_colonne_personne cannot be resolved

    at com.objis.demojdbc.DemoJdbc.lireEnBase(DemoJdbc.java:100)
    at com.objis.demojdbc.DemoJdbc.main(DemoJdbc.java:17)

  5. #5
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut


    Citation Envoyé par mdh12 Voir le message
    ton_Jtable cannot be resolved
    car il faut le remplacer par le nom de l'objet JTable que tu devra créer au préalable.

    Citation Envoyé par mdh12 Voir le message
    num_colonne_personne cannot be resolved
    num_colonne_personne est le numéro de la colonne JTable qui va contenir les personnes extraites de la table BD.

Discussions similaires

  1. Gérer MySQL avec Java
    Par philippe6 dans le forum JDBC
    Réponses: 3
    Dernier message: 25/07/2012, 14h54
  2. Réponses: 1
    Dernier message: 25/03/2010, 00h18
  3. Mettre à jour un JTable en java
    Par sky_yassin dans le forum Débuter
    Réponses: 1
    Dernier message: 28/06/2009, 15h30
  4. JTable en java
    Par ibma4 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/01/2008, 09h41
  5. jtable debutant java
    Par lolla21 dans le forum Composants
    Réponses: 8
    Dernier message: 25/09/2006, 14h32

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