Erreur de syntaxe lors de la conversion d'une valeur datetime
Salut tout le monde :)
j'ai fait un programme qui permet de récupérer des données a partir d'une table sous SqlServer2000 et il les affiche dans un JTable.
J'ai fais 4 classe :
Classe 1 : Pour effectuer la connexion avec la BDD
Classe 2 : La ou j'ai mit ma requête, voila :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public static ResultSet afficherClient(Date d1, Date d2) throws Exception {
String query = "Select * from Incident where Date_cou BETWEEN '"+d1+"' and '"+d2+"'" ;
return connexion.select(query);
}
public static ResultSet nbreLigne(Date d1,Date d2) throws Exception {
String query = "select count (*) from Incident where Date_cou BETWEEN '"+d1+"' and '"+d2+'" ;
return connexion.select(query);
} |
Classe 3 : c'est la classe qui permet de remplir le JTable :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
static JTable remplir(ResultSet rs,ResultSet rs1) {
nombrecolone = rs.getMetaData().getColumnCount();//le nbre de colonne
String[] LesColones = new String[nombrecolone];// creer un tableau selon le nbre de colonne
for (int k = 1; k <= nombrecolone; k++) {// remplir le tableau qui contient les colonne
LesColones[k - 1] = rs.getMetaData().getColumnName(k);
}
while (rs1.next()) { L'erreur est a ce niveau !
nombreligne=rs1.getInt(1);
}
ligne = new String[nombreligne][nombrecolone];
int j = 0;
while (rs.next()) {
for (int i = 1; i <= nombrecolone; i++) {
int h = i - 1;
ligne[j][h] = rs.getString(i);
}
j++;
}
JTable tableau = new JTable(ligne, LesColones); |
Classe 4 : la classe qui m'ouvre la fenetre :
Dans la fenetre il y a deux champs JTextField pour faire entrer les deux date avec un boutton c adire l'utilisateur il entre les deux dates et il clik sur le boutton pour qu'il voit l'affichage du tableau :
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
|
:
:
:
//code pr afficher le textfieled et le bouton ...
ResultSet rs = aa.afficherClient(qq1,qq2);
ResultSet rs1 = aa.nbreLigne();// pr copter le nbre de ligne
afficher a = new afficher();
final JTable tt= a.remplir(rs, rs1);
inputPanel.add(tt).setVisible(false);
c.add(inputPanel);
//this.getContentPane().add(new JScrollPane(tt)).setVisible(false);
jButton.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent e) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
java.util.Date do1 = null;
try {
do1 = sdf.parse(da.getText());
System.out.println(" "+do1);
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
java.util.Date do2 = null;
try {
do2 = sdf.parse(te.getText());
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
java.sql.Date qq1 = new java.sql.Date(do1.getTime());
java.sql.Date qq2 = new java.sql.Date(do2.getTime());
System.out.println(qq1);
inputPanel.add(tt).setVisible(true);
}
});
} |
Mais je recoit une erreur des l'exécution du programme, L'erreur :
Citation:
Erreur de syntaxe lors de la conversion d'une valeur datetime à partir d'une chaine de caractère
Le probleme est dans la classe 3 qui remplit le JTable, dans " while (rs1.next())"
Je sais pas comment faire pour corrigé cette erreur !
Pourriez vous m'aider SVP
MERCI.
Ou je fais l'appel de mes fonction ?!
Salut :)
Merci Robin56 pour votre réponse.
Voila donc j'ai essai de faire ce que vous m'avez proposé:
Mais la je rencontre un autre probleme :
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 81 82 83
|
public class Fenetre extends JFrame {
public Fenetre() throws Exception {
String j1;
String j2;
String datDebFormat = null;
String datFinFormat = null
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("JTable");
this.setSize(800, 600);
Container c;
c = getContentPane();
c.setLayout(new BorderLayout());
JPanel inputPanel = new JPanel();
inputPanel.setPreferredSize(new Dimension(800, 600));
JLabel jLabel10 = new JLabel();
jLabel10.setBounds(new Rectangle(30, 248, 132, 25));
jLabel10.setText(" De : ");
inputPanel.add(jLabel10);
JTextField da = new JTextField(8);
inputPanel.add(da);
JLabel jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(447, 119, 102, 37));
jLabel1.setText(" A : ");
inputPanel.add(jLabel1);
JTextField te = new JTextField(8);
inputPanel.add(te);
JButton jButton = new JButton();
jButton.setBounds(new Rectangle(137, 100, 80, 50));
jButton.setText("OK");
inputPanel.add(jButton);
c.add(inputPanel);
JPanel tabPan = new JPanel();
DaoClient aa = new DaoClient("sa", "1302", "Sonalgaz");
ResultSet rs = aa.afficherClient( datDebFormat, datFinFormat);// resultat de select from table
ResultSet rs1 = aa.nbreLigne();// pr copter le nbre de ligne
afficher a = new afficher();
final JTable tt= a.remplir(rs, rs1);
inputPanel.add(tt).setVisible(false);
c.add(inputPanel);
jButton.addMouseListener(new java.awt.event.MouseAdapter(){
public void mouseClicked(java.awt.event.MouseEvent e) {
DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
j1 = da.getText();
j2 = te.getText();
try{
Date d1 = (Date) sdf.parse(j1);
Date d2 = (Date) sdf.parse(j2);
datDebFormat= sdf.format(d1); La est l'erreur
datFinFormat= sdf.format(d2);
inputPanel.add(tt).setVisible(true);
}
});
}
} |
et la il m'affiche une erreur au niveau des variable "datDebFormat & datFnFormat"
Erreur : "The final local variable datDebFormat cannot be assigned, since it is defined in an enclosing type"
Donc c'est l'appel des fonction qui me cause probleme :
Code:
1 2 3 4 5
| ResultSet rs = aa.afficherClient( datDebFormat, datFinFormat);// resultat de select from table
ResultSet rs1 = aa.nbreLigne();// pr copter le nbre de ligne
afficher a = new afficher();
final JTable tt= a.remplir(rs, rs1); |
Mais la je sais pas comment faire, Ou je ferais cet appel ?!
y a t'il une autre proposition ?!
Merci pour votre attention