cs_manou9
Messages postés52Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention30 mars 2011
-
12 mars 2010 à 16:19
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 2012
-
9 avril 2010 à 20:02
Bonjout
J'ai cree une JTable modifiable mais lorsque je modifie les champs une serie d'erreurs s'affiche sur java concernant IndexOutOfBoundsException Index :0 size : 0.
j'ai utilise la methode setValueAt mais ya un probleme dans cette methode ya-t-il une solution?
Aidez-Moi SVP
cs_manou9
Messages postés52Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention30 mars 2011 13 mars 2010 à 21:33
bonjour
Je vais detailler mon probleme
j'ai cree une petite interface graphique avec java et je veux creer dans cette interface une JTable editable qui est attaché à une base de données mysql, j'ai pu faire cela à partir d'un code trouvé dans les forums mais lorsque je saisie une nouvelle valeur dans la zone ya plein d'erreurs qui s'affichent concernant IndexOutOfBoundsException Index :0 size : 0 et je n'ai pas trouvé une solution à ce probleme!
ou bien ya t il une methode adaptable à mon probleme
Aidez moi SVP c'est une partie de mon projet de fin d'étude si je ne trouve pas la solution je reste coincé
Merci beaucoup
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 14 mars 2010 à 11:35
Essaie une fois ceci dans le TableModel:
@Override
public void setValueAt(final Object aValue, final int row, final int column) {
Vector rowVector = (Vector) dataVector.elementAt(row);
rowVector.setElementAt(aValue, column);
fireTableCellUpdated(row, column);
}
cs_manou9
Messages postés52Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention30 mars 2011 14 mars 2010 à 20:05
est ce que je dois utiliser ce code tel qu'il est ou je dois modifier
et comment faire pour modifier aussi les valeurs correspondantes dans la base de donnees?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_manou9
Messages postés52Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention30 mars 2011 15 mars 2010 à 17:29
Bonjour
Voici le code java pour l'affichage d'une table de ma base de donnees et la rendre editable sauf que je n'ai pas encore mis l'instructuion de Update :
========================================
1 eme java class
========================================
public TMFromMysql(String pilote,String host,String login,String pw,String query){
connexion = new SQLExecuteQuery(pilote,host,login,pw);
connexion.setQuery(query);
}
@Override
public boolean isCellEditable (int rowIndex, int columnIndex){
return true;
}
public int getColumnCount(){
int i = 0;
try {
i = connexion.getResultSet().getMetaData().getColumnCount();
}
catch(SQLException e){
System.out.println(e);
}
return i;
}
public int getRowCount(){
int i = 0;
try {
ResultSet rs = connexion.getResultSet();
rs.last();
i = rs.getRow();
}
catch(SQLException e){
System.out.println(e);
}
return i;
}
public String getColumnName(int c){
String s = "";
try {
s = connexion.getResultSet().getMetaData().getColumnName(c + 1);
}
catch(SQLException e){
System.out.println(e);
}
return s;
}
@Override // Je suis sur que l'erreur est ici
public void setValueAt(final Object colname, final int row, final int columnIndex)
{
Vector vect = new Vector();
Vector rowVector = (Vector) vect.elementAt(row);
switch (columnIndex){
case 1: vect.setElementAt(colname,columnIndex);
break;
case 2 : vect.setElementAt(colname,columnIndex);
break;
case 3 : vect.setElementAt(colname,columnIndex);
break;
case 4 : vect.setElementAt(colname,columnIndex);
break;
case 5 : vect.setElementAt(colname,columnIndex);
break;
case 6: vect.setElementAt(colname,columnIndex);
break;
}
public static ResultSet getResultSet(){
return rs;
}
}
========================================
3 eme java class
========================================
////f.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package desktopapplication2;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.print.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Dimension;
import java.sql.*;
/**
*
* @author abderrahmane
*/
public class f extends JFrame {
//@Override
//public Dimension getPreferredSize() {
//return new Dimension(20, 30);}
public f(){
String pilote = "com.mysql.jdbc.Driver";
String host = "jdbc:mysql://localhost:3306/my db";
String login = "root";
String pw = "";
setTitle("Liste des candidats");
setSize(x,y);
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
show();
TM = new TMFromMysql(pilote,host,login,pw,"select * from candidat");
JTable T = new JTable(TM);
JScrollPane JSP = new JScrollPane(T);
JSP.setPreferredSize(new Dimension(x,y));
getContentPane().add(JSP,BorderLayout.CENTER);
pack();
//TM.setValueAt(T.getSelectedRow(),0 ,1 );
// boutton d'impression
uhrand
Messages postés491Date d'inscriptionsamedi 20 mai 2006StatutMembreDernière intervention15 juillet 20129 17 mars 2010 à 06:27
L'utilisation d'un "Vector" n'est pas indiquée dans ton cas, puisque tu te base directement sur le "ResetSet". Essaie d'actualiser le ResultSet avec une méthode "rs.update..." et la base avec "rs.updateRow()". Tu dois peut-être adapter également le "createStatement(..)" de la méthode "Connect()".
cs_manou9
Messages postés52Date d'inscriptionmardi 9 mars 2010StatutMembreDernière intervention30 mars 2011 17 mars 2010 à 13:13
J'ai ecris un code en suivant tes conseils 'uhrand' mais rien est passe, la base n'est pas modifiable et lorsque j'entre une nouvelle valeur dans la Jtable c'est l'ancienne qui reste
voici le code ;
try {
// Création d'une connexion à la base
Connection ma_connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/my db",
"root",
""
);
Statement stmt = ma_connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
ResultSet rs = stmt.executeQuery("SELECT * FROM candidat");
while (rs.next()){
String N = rs.getString(2);
rs.updateString("Nom", N);
//rs.updateRow();
String P = rs.getString(3);
rs.updateString("Prenom", P);
String D = rs.getString(4);
rs.updateString("DN", P);
int C = rs.getInt(5);
rs.updateInt("CD", C);
String Pr = rs.getString(6);
rs.updateString("Presence", Pr);
int w = rs.getInt(7);
rs.updateInt("wilaya", w);