[Débutant] Truc débile

Truc débile [Débutant] - Java - Programmation

Marsh Posté le 13-06-2007 à 17:47:32    

Bonjour à tous, voila j'ai une jTable qui s'initialise à partir d'une base de données, le probleme est que quand ma Bdd s'actualise je n'arrive pas à actualiser ma table, j'ai pourtant essaye pas mal de solution avant de venir demander.
Serait il possible d'avoir de l'aide SVP c'est important.  
Merci d'avance

Reply

Marsh Posté le 13-06-2007 à 17:47:32   

Reply

Marsh Posté le 14-06-2007 à 10:23:18    

Personne ne peut m'aider?

Reply

Marsh Posté le 14-06-2007 à 11:49:30    

Pas de solution sans saturer ta bdd.
 
Fait un requete toutes les n secondes pour ractualiser ta table. Utilise des thjreads pour pas bloquer ton interface.
 
Mais je te deconseille franchement ca : la bdd va etre saturée. Utilise plutot un bouton rafrachir qui met a jour la jtable.
 
Enfin, si tu veux vraiment afficher le contenu en temps reel, il va te falloir utiliser d'autres outils qu'un bdd/affichage via jTable.

Reply

Marsh Posté le 14-06-2007 à 12:02:41    

Java connaît pas les systèmes de notification des SGBD ???
 
Logiquement tu ouvres le curseur de lecture en mode optimistic et il doit se mettre à jour en temps réel :??:
 
C'est jTable qui pose problème ou JDBC ???

Reply

Marsh Posté le 14-06-2007 à 12:40:35    

Les utilisateurs peuvent choisir les colonnes du tableau que je fais à l'aide d'un popup et quand ils valident le popup, la base qui contient les colonnes à afficher se met à jour. Seulement ma table ne se rafraichi pas.
Ceci me pose beaucoup de problemes si vous pouviez m'aider ça serait cool.

Reply

Marsh Posté le 14-06-2007 à 13:02:26    

Voici l'initialisation de mon tableau à parti de mon model :

Code :
  1. jTtableauclient = new JTable(new Modelclient());


 
et voici mon model:
 

Code :
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.sql.Statement;
  6. import javax.swing.JOptionPane;
  7. import javax.swing.table.AbstractTableModel;
  8. public class Modelclient extends AbstractTableModel {
  9.  Connection connexion = null,connexiongescom = null;
  10.  Statement  instruction  = null,instructiongescom  = null;
  11.  ResultSet  resultat = null,resultatgescom = null;
  12.  Integer nbrechamp=1,index=0,nbreenreg=0,index2=0,index3=0;
  13.  String[] columnNames;
  14.  Object[][] data;
  15.         public Modelclient() {
  16.          try
  17.       {       
  18.         Class.forName ("com.mysql.jdbc.Driver" );  // Chargement de la classe du driver JDBC de MySQL  
  19.         connexion = DriverManager.getConnection("jdbc:mysql://localhost/bdd_utilisateur" );// Ouverture de la connexion avec MySQL sur la base utilisateur
  20.         instruction = connexion.createStatement();      
  21.         resultat = instruction.executeQuery("select count(*)FROM param_utilisateur  where affichage='1'" );//combien de colonnes à afficher?  
  22.         resultat.next();
  23.         nbrechamp=resultat.getInt("count(*)" );
  24.         columnNames = new String[nbrechamp];
  25.         resultat = instruction.executeQuery("select champ FROM param_utilisateur where affichage ='1'" );//selection des champs a afficher          
  26.      
  27.         while(index<nbrechamp){ // initialisation des colonnes
  28.         resultat.next();
  29.           columnNames[index]=resultat.getString("champ" );         
  30.           index++;
  31.      }
  32.         connexiongescom = DriverManager.getConnection("jdbc:mysql://localhost/gescom2" );// Ouverture de la connexion avec MySQL sur la base utilisateur
  33.         instructiongescom = connexiongescom.createStatement();
  34.         resultatgescom = instructiongescom.executeQuery("select count(*)FROM client" );// combien d'enregistrement dans la table client?
  35.         resultatgescom.next();
  36.         nbreenreg=resultatgescom.getInt("count(*)" );
  37.        
  38.         resultatgescom = instructiongescom.executeQuery("select * FROM client" );
  39.      
  40.      
  41.         data = new Object[nbreenreg][nbrechamp];
  42.         while(index2<nbreenreg){ //initialisation des données
  43.          resultatgescom.next();
  44.          while(index3<nbrechamp){
  45.           data[index2][index3]=resultatgescom.getString((index3+1));
  46.           index3++;          
  47.          }
  48.         index3=0;
  49.         index2++;
  50.         }
  51.       }
  52.          catch (ClassNotFoundException ex)
  53.       {
  54.         JOptionPane.showMessageDialog(null,"Classe introuvable " + ex.getMessage ());
  55.       }
  56.       catch (SQLException ex)
  57.       {
  58.         JOptionPane.showMessageDialog(null,"Erreur JDBC : " + ex.getMessage ());
  59.       }
  60.       finally
  61.       {
  62.         try
  63.         {
  64.           if (resultat != null)
  65.             resultat.close();
  66.           if (instruction != null)
  67.             instruction.close();
  68.           if (connexion != null)
  69.             connexion.close();
  70.         }
  71.         catch (SQLException ex)
  72.         {
  73.           ex.printStackTrace ();
  74.         }
  75.       }
  76.      fireTableStructureChanged();
  77.         }
  78.         public int getColumnCount() {
  79.             return columnNames.length;
  80.         }
  81.         public int getRowCount() {
  82.             return data.length;
  83.         }
  84.         public String getColumnName(int col) {
  85.             return columnNames[col];
  86.          
  87.         }
  88.         public Object getValueAt(int row, int col) {
  89.             return data[row][col];
  90.         }
  91.      
  92.     }


Au passage je commence tout juste le java alors je sais qu'il y a des trucs que je fais horriblement mal mais mon maitre de stage ne connais pas le java du coup je me retrouve tout seul sans personne pour m'aider.
Merci d'avance.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed