Peupler une JTable à partir de JDBC
Bonjour à tous,
J'ai un problème avec ma JTable j'arrive pas à mettre le résultat de ma requête à l'intérieur. Il me renvoie un NullPointerException, mais pourtant ma requête renvoie bien un résultat.
Voici le code de ma JTable :
Code:
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
|
package vue;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import modele.Conclient;
public class Vue_TableClient extends JPanel{
private String[] NomColonne;
public String[] getNomColonne() {
return NomColonne;
}
public void setNomColonne(String[] nomColonne) {
this.NomColonne = nomColonne;
}
private Object[] [] data;
public Object[][] getData() {
return data;
}
public void setData(Object[][] data) {
this.data = data;
}
public Vue_TableClient(){
Conclient con = new Conclient();
this.setLayout(new BorderLayout());
//Valeur temporaire pour éviter l'erreur NullPointerException
String [] nomcol={"Code","Nom","Localite"};
setNomColonne(nomcol);
//String [][]donne = ;
//setData(donne);
JTable TableClient = new JTable( getData(), getNomColonne());
//JScrollPane TableClientScroll = new JScrollPane(TableClient);
//this.add(TableClientScroll);
this.add(new JScrollPane(TableClient));
}
} |
Et voici le code de ma connexion :
Code:
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
|
package modele;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import vue.Vue_TableClient;
public class Conclient {
private Connection conn = null;
public Conclient(){
//Connection conn = null;
//Statement statement = null;
//ResultSet resultSet = null;
String classDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String driverJdbc = "";
String serverAdress ="LHIASCZKTER\\SQLEXPRESS";
String bdd ="sqlclient";
String user ="root";
String pass="";
try {
Class.forName(classDriver);
// Création de la connexion vers le serveur de bd
conn = DriverManager.getConnection(
"jdbc:sqlserver://" + serverAdress +
";database=" + bdd +
";user=" + user +
";password=" + pass
);
}catch (ClassNotFoundException e) {
System.out
.println("Le fichier CLASS java du Driver SQL n'a pas été trouvé");
System.out.println(e.getMessage());
}catch (SQLException e) {
System.out
.println("Probleme lors de la création d'une connexion");
System.out.println(e.getMessage());
}
System.out.println("La connexion à été effectué");
}
public void affiche(){
String query = "SELECT * FROM client;";
ResultSet results;
try {
Statement stmt = conn.createStatement();
results = stmt.executeQuery(query);
while(results.next()){
String code_client = results.getString("code_client");
String nom = results.getString("nom");
String localite = results.getString("localite");
//Ici j'aimerais, je dis bien J'AIMERAIS mettre le résultat
//de la requête dans la table :-)
String[][]donne ={{code_client,nom,localite}};
Vue_TableClient vtl = new Vue_TableClient();
vtl.setData(donne);
//Ici j'affiche le résultat de la requête dans la console
System.out.println(code_client + " " + nom + " " +localite);
}
}
catch(Exception e){
System.out.println("Une erreur subsiste dans la requête(nom de la colonne de la table)");
}
}
} |
Quand je teste ma méthode Conclient .affiche(); il m'affiche le résultat de la requête dans la console, donc côté requête c'est tip-top.
C'est vraiment côté JTable que je comprends pas ce qu'il se passe. Pourtant j'y croyais puisque c'est presque le même chose que les exemples fournis par java :aie:
Une petite chose encore savez-vous aussi pourquoi quand je teste ma méthode Conclient .affiche(); via la console il me renvoie :
Citation:
La connexion à été effectué
La connexion à été effectué
nfa Martin Los Avanchez
La connexion à été effectué
nfp Von cock Saint-tropez
J'ai l'impression que j'aurais autant de connexion que d'enregistrement c'est normal ça ?
Merci à tous pour votre aide.:king: