Probleme d'insertion de la date

alibabapro Messages postés 23 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour, j'essaie d'inserer ce code mais on me signale cette erreur:com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'date' at row 1.

Voici mon code:
  try {
if (txtid.getText().isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: id");
else if (((String) cmbno.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: nom");
else if (((String) cmbpr.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: prenom");
else if (((String) cmbte.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: expediteur");
else if (((String) cmbtd.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: destinateur");
else if (((String) cmbref.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: reference");
else if (dedit.getJCalendar().toString().isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: date");
else if (txtmo.getText().isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: montant");
else if (((String) cmbty.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: type");
else if (((String) cmbfr.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: frais");
else {
String[] colon = { "id", "nom", "prenom", "expediteur", "destinateur",
"reference", "date", "montant", "type", "frais" };
String[] inf = { txtid.getText(), (String) cmbno.getSelectedItem(),
(String) cmbpr.getSelectedItem(), (String) cmbte.getSelectedItem(),
(String) cmbtd.getSelectedItem(), (String) cmbref.getSelectedItem(),
dedit.getJCalendar().toString(), txtmo.getText(), (String) cmbty.getSelectedItem(),
(String) cmbfr.getSelectedItem() };
System.out.println(db.queryInsert("airtel", colon, inf));
table();
actualiser();
}
} catch (Exception e) {
e.printStackTrace(); // affiche le détail de l'erreur sur la console
JOptionPane.showMessageDialog(this,
java.util.Arrays.toString(e.getStackTrace()),
e.getClass().getName(), JOptionPane.ERROR_MESSAGE);

Pouvez vous m'aider.merci!!
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Bonjour,

Dans une table de base de données chaque colonne a un type avec lequel vient une taille limite des données.

Ton erreur vient du fait que la valeur que tu essais d'insérer dépasse la limite de la colonne.

Deux solutions possibles :
Diminuer la taille de la valeur à insérer pour qu'elle respecte la contrainte.
Changer le type de la colonne sur la table pour augmenter sa taille limite afin que ta donnée rentre dedans.
0
alibabapro Messages postés 23 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, j'ai tout essaye passant la valeur de la variable date ajusqu'a 120 mais le meme erreur signale toujours.Ce que j'essai de recupere est une Jcalandar,mais je sais pas comment meme recuperer la date.
Voici mon code:
  try {
if (txtid.getText().isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: id");
else if (((String) cmbno.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: nom");
else if (((String) cmbpr.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: prenom");
else if (((String) cmbte.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: expediteur");
else if (((String) cmbtd.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: destinateur");
else if (((String) cmbref.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: reference");
else if (dedit.toString().isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: date");
else if (txtmo.getText().isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: montant");
else if (((String) cmbty.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: type");
else if (((String) cmbfr.getSelectedItem()).isEmpty())
JOptionPane.showMessageDialog(this, "SVP entre les infos: frais");
else {
String[] colon = { "id", "nom", "prenom", "expediteur", "destinateur",
"reference", "date", "montant", "type", "frais" };
String[] inf = { txtid.getText(), (String) cmbno.getSelectedItem(),
(String) cmbpr.getSelectedItem(), (String) cmbte.getSelectedItem(),
(String) cmbtd.getSelectedItem(), (String) cmbref.getSelectedItem(),
dedit.toString(), txtmo.getText(), (String) cmbty.getSelectedItem(),
(String) cmbfr.getSelectedItem() };
System.out.println(db.queryInsert("airtel", colon, inf));
table();
actualiser();
}
} catch (Exception e) {
e.printStackTrace(); // affiche le détail de l'erreur sur la console
JOptionPane.showMessageDialog(this,
java.util.Arrays.toString(e.getStackTrace()),
e.getClass().getName(), JOptionPane.ERROR_MESSAGE);
}

Merci de bien vouloir m'aider!!
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Si c'est une date il faut déjà que ta colonne en base de données soit au format date, il en existe plusieurs selon tes besoins et ton SGBD.

Puis bien sûr il faut que lorsqu'en Java tu insères ta date ce soit effectivement une date, et de manière générale tu ne peux tout stocker en String dans une base de données, c'est inefficace.

Exemple :

int id = 42;
Date date = new Date();
String sql = "UPDATE table SET date = ? WHERE id = ?";
try (PreparedStatement ps = con.prepareStatement(sql)) {
    ps.setDate(1, date);
    ps.setInt(2, id);
    ps.executeUpdate();
}

Remarque : JCalendar n'est pas une classe standard Java, si tu l'as récupéré d'une bibliothèque particulière, il faut regarder la documentation associée pour savoir comment s'en servir pour obtenir un objet Date.
0