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 :

JTable avec base de donnée


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut JTable avec base de donnée
    Bonjour à tous, j'ai un souci pour mettre des données récupérées à partir d'une base de données dans une JTable.
    J'ai créé 2 classes, une qui crée JFrame, JTable etc et une autre pour la connexion avec la base de données.
    Voici le code de la classe BaseDonnees
    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
     
    public class BaseDonnees extends AbstractTableModel{
     
    	private static final long serialVersionUID = 1L;
    	Vector cols = new Vector ();
    	Vector data = new Vector();
    	String sql= null;
     
    	public Vector rows() {
     
            try {
                //  Connect to the Database
     
                String driver = "sun.jdbc.odbc.JdbcOdbcDriver";           
                String url = "jdbc:odbc:Driver={Microsoft Access Driver  (*.mdb)};DBQ=ventes.mdb";
     
                Class.forName(driver);
                Connection connection = DriverManager.getConnection(url);
     
                //  Read data from a table
     
                sql = "INSERT INTO Clients (IdClient,Civilité, Nom, Prenom, Adresse, CodePostal, Ville) VALUES ('1','Melk', 'dvk', " +
                "'Patfal', 'krogfm', 'fkokkfdvmpkl', 'gghgiuhm')";
     
     
     
                sql = "select * from clients";
     
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery(sql);
                ResultSetMetaData md = rs.getMetaData();
                int columns = md.getColumnCount();
     
                //  Get column names
     
                /*for (int i = 1; i <= columns; i++) {
                columnNames.addElement(md.getColumnName(i));
                }*/
     
                //  Get row data
     
                while (rs.next()) {
                    Vector row = new Vector(columns);
     
                    for (int i = 1; i <= columns; i++) {
                        row.addElement(rs.getObject(i));
                    }
     
                    data.addElement(row);
     
                }
     
                rs.close();
                stmt.close();
            } catch (Exception e) {
                System.out.println(e.getMessage());
                System.out.println(e.getStackTrace());
            }
     
            System.out.println(data);
            return data;
    }
     
     
       public Vector columns()
        {
     
        	try {
                //  Connect to the Database
     
                String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
                String url = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=ventes.mdb";
     
     
                Class.forName(driver);
                Connection connection = DriverManager.getConnection(url);
     
                sql = "select * from clients";
     
                Statement stmt = connection.createStatement();
                ResultSet rs = stmt.executeQuery(sql);
                ResultSetMetaData md = rs.getMetaData();
                int columns = md.getColumnCount();
     
                  //Get column names
     
                for (int i = 1; i <= columns; i++) {
                cols.addElement(md.getColumnName(i));
                }
               } catch (Exception e) {
                System.out.println(e.getMessage());
                System.out.println(e.getStackTrace());
            }
            System.out.println(cols);
        	return cols;
        }
    Maintenant, j'envoie les données "data" de la méthode rows() et "cols" de la méthode columns() dans la JTable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private JTable getJTableClient() {
    BaseDonnees bd = new BaseDonnees ();
     
    		if (jTableClient == null) {
    			jTableClient = new JTable(bd.rows(), bd.columns());
    		}
     
    		return jTableClient;
    	}
    Mon problème c'est que tout se passe bien, les données sont insérées dans la JTable mais les nom des colonnes ne sont pas affichées dans la table. J'ai fait un println et la méthode columns() récupère bien les nom de colonnes de la base. J'ai beau cherché partout mais je ne trouve pas mon bonheur. Pourriez-vous m'aider?

    pour infos, j'ai implémenté les méthodes abstraites de AbstractTableModel comme suit:

    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
     
    public int getColumnCount() {
    	// TODO Auto-generated method stub
    	return cols.size();
    }
     
     
    @Override
    public int getRowCount() {
    	// TODO Auto-generated method stub
    	return rows().size();
    }
     
     
    @Override
    public Object getValueAt(int row, int column) {
    	// TODO Auto-generated method stub
    	return (String)data.elementAt((row*getColumnCount())+column);
    }
     
    public String getColumnName (int column)
    {
    	String colonnes= null;
    	if (column <= getColumnCount())
    		colonnes=(String)cols.elementAt(column);
    	return colonnes;
    }
     
    public Class<String> getColumnClass(int columnIndex){
        return String.class;
       }
    Aidez-moi svp

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Merci de chercher dans la FAQ.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut
    merci sinok de ta reponse. mais ca marche pas dans mon cas car la jtable est dans jtabbedpane et qui à son tour est dans jpanel.
    d'autres pistes??

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

Discussions similaires

  1. Jtable dynamique avec base de données
    Par sisi37 dans le forum Composants
    Réponses: 5
    Dernier message: 17/10/2008, 16h01
  2. optimisation requetes avec base de données
    Par flogreg dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 05/07/2005, 14h54
  3. InstallShield avec base de données
    Par duga dans le forum C++Builder
    Réponses: 8
    Dernier message: 18/03/2005, 15h44
  4. CD ROm avec base de données
    Par marcoco dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 10/02/2005, 14h16
  5. requête SQL avec paramètre en vb avec base de donnée SQL srv
    Par dialydany dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 01/02/2005, 10h33

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