Probleme d'insertion de la date

Fermé
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016 - 11 août 2016 à 11:36
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 12 août 2016 à 20:15
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
11 août 2016 à 19:08
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 lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016
12 août 2016 à 12:44
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 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
12 août 2016 à 20:15
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