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 :

perde de données en passant par un TableModel


Sujet :

Composants Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Points : 52
    Points
    52
    Par défaut perde de données en passant par un TableModel
    Bonjour à tous

    Je travail actuellement sur les JTables pour afficher les données d'une base de données. Lorsque que j'effectue les traitement pour créer les 2 vecteurs (data et columnName) et que je les affiche avec ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JTable jtable = new JTable(data,ColumnName);
    Je n'ai pas de perte de données

    avec le code suivant :

    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
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Vector;
     
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
     
     
    /*Cette classe se connect à la base de donnee
     * creer les 2 vecteurs nécessaire à la creation de la TableModel
     * affecte les valeurs creer aux attributs de la classe
     * et se deconnect de la base de donnee
     * 
     * Elle instancie egalement les methodes de la classe abstraite 
     * "AbstractTableModel" qui définit un TableModel
     * 
     * */
    public class BddAllelicResultByGermplasm extends AbstractTableModel {
    	private Vector data = new Vector();
    	private Vector columnName = new Vector();
     
     
     
     
     
    	ResultSet rsAllResSample = null;
    	Statement stmt = null;
    	Connection conn = null;
    	private static final long serialVersionUID = 1L;
     
    	BddAllelicResultByGermplasm() {
    		recupDonnees();
    	}
     
    	/*
    	 * Cette méthode se connect à la base de donnée et fait des traitement afin
    	 * de générer Les 2 vecteurs pour la construction du modeleTable
    	 */
    	public void recupDonnees() {
     
    		try {
    			/* Register the driver */
    			Class.forName("com.mysql.jdbc.Driver").newInstance();
    			try {
    				/* Connexion à la base */
    				Connection conn = DriverManager.getConnection(
    						"jdbc:mysql://127.0.0.1/sagacity", "root", "mysql");
     
    				try {
     
    					stmt = conn.createStatement();
    					rsAllResSample = stmt
    							.executeQuery("SELECT * FROM all_res_samp");
    					ResultSetMetaData md = rsAllResSample.getMetaData();
     
    					// info sur la structure de la table table
    					int columnCount = md.getColumnCount();
     
    					/* Creation du vecteur column */
    					Vector<String> columnName = new Vector<String>(columnCount);
    					for (int i = 1; i <= columnCount; i++) {
    						columnName.add(md.getColumnName(i));
    					}
     
    					this.columnName = columnName;
    					data = new Vector<Vector<String>>(columnCount);
     
    					/*
    					 * on creer les lignes une par une et on ajoute au vecteur
    					 * data
    					 */
    					while (rsAllResSample.next()) {
    						Vector<String> row = new Vector<String>(columnCount);
    						for (int i = 1; i <= columnCount; i++) {
    							row.add(rsAllResSample.getString(i));
    						}
    						data.add(row);
    					}
    					this.data = data;
    					/* Test */
    					 View v = new View();
    					 JTable jt = new JTable(data,columnName);
    					 v.viewTablePrincipale(jt);
    					conn.close();
     
    				} catch (SQLException SQLEx) {
    					System.out.println("SQLException: " + SQLEx.getMessage());
    				} finally {
     
    					/* En cas de problème on ferme tout */
    					if (rsAllResSample != null) {
    						try {
    							rsAllResSample.close();
    						} catch (SQLException sqlEx) {
    							System.out.println("SQLException: "
    									+ sqlEx.getMessage());
    						}
    						rsAllResSample = null;
    					}
    					if (stmt != null) {
    						try {
    							stmt.close();
    						} catch (SQLException sqlEx) {
    							System.out.println("SQLException: "
    									+ sqlEx.getMessage());
    						}
    						stmt = null;
    					}
    					if (conn != null) {
    						try {
    							conn.close();
    						} catch (SQLException sqlEx) {
    							// Ignore
    						}
    						conn = null;
    					}
    				}
     
    			} catch (SQLException SQLex) {
    				System.out.println("SQLException: " + SQLex.getMessage());
    				System.out.println("SQLState: " + SQLex.getSQLState());
    				System.out.println("VendorError: " + SQLex.getErrorCode());
    			}
    		} catch (Exception ex) {
    			System.out.println("Exception " + ex.getMessage());
    		}
     
    	}
     
     
     
    	@Override
    	public int getColumnCount() {
    		return columnName.size();
     
    	}
     
    	@Override
    	public int getRowCount() {
    		return data.size() / getColumnCount();
    	}
     
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		return (String) ((Vector) data.elementAt(rowIndex))
    				.elementAt(columnIndex);
    	}
     
    }
    Des lignes manques lorsque que je me sert du TableModel comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    BddAllelicResultByGermplasm bddAll = new BddAllelicResultByGermplasm ();
    JTable jtable = new JTable(bddAll);
    Est ce que vous avez déjà rencontré ce genre de problème ?
    Merci

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    C'est quoi ces lignes dans ton Model ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    View v = new View();
    JTable jt = new JTable(data,columnName);
    v.viewTablePrincipale(jt);
    Et d'où vient le calcul du nombre de lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public int getRowCount() {
    	return data.size() / getColumnCount();
    }

  3. #3
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Points : 52
    Points
    52
    Par défaut
    Bah j'utilise la classe View pour afficher ma JTable
    Pour le compte du nombre de ligne je sais pas j'ai jamais fais vraiment attention.
    J'avais recopier ca sans faire gaff.. pas très pro.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Points : 52
    Points
    52
    Par défaut
    ahhh j'avais pas compris
    ses lignes dans mon modèle c'est juste pour le test sinon j'ai une class view qui gère l'affichage

  5. #5
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Points : 52
    Points
    52
    Par défaut
    Et dernière chose à l'utilisation du modèle, les titres de mes colonnes sont remplacés par des lettres

  6. #6
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Points : 52
    Points
    52
    Par défaut
    je viens de comprendre que les 3 méthodes obligatoire de "AbstractTableModel"
    géraient les données qui allaient être affiché dans la JTable
    Désolé...

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

Discussions similaires

  1. Courbe de Bézier passant par des points donnés
    Par tchize_ dans le forum Mathématiques
    Réponses: 49
    Dernier message: 06/04/2022, 23h13
  2. Réponses: 10
    Dernier message: 25/07/2011, 17h39
  3. [AC-2007] Filtrer les données d'une requête en passant par VBA
    Par Oliv'83 dans le forum VBA Access
    Réponses: 6
    Dernier message: 27/04/2011, 12h07
  4. [AJAX] Suppression données mysql avec checkbox et passant par ajax
    Par MartiW dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/12/2008, 09h56
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 21h00

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