Enregistrement dans la base de donnee

Fermé
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016 - 6 août 2016 à 12:41
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 7 août 2016 à 15:50
Bonjour, je developpe une application mais quand j'essaye d'isert dans la base de donne,on me signale l'erreur suivant: "Infos ajouternull".
Voici mon code


try{
if(txtid.getText().equals("") || cmbno.getSelectedItem().equals("") || cmbpr.getSelectedItem().equals("")
|| cmbte.getSelectedItem().equals("") || cmbtd.getSelectedItem().equals("") || cmbref.getSelectedItem().equals("")
|| dedit.getDateFormatString().equals("") || txtmo.getText().equals("") || cmbty.getSelectedItem().equals("")
|| cmbfr.getSelectedItem().equals("")){
JOptionPane.showMessageDialog(null, "SVP entre les infos complete");
} else {
String[] colon = {"id", "nom", "prenom","expediteur","destinateur", "reference", "date", "montant", "type","frais"};
String[] inf ={txtid.getText(),cmbno.getSelectedItem().toString(),cmbpr.getSelectedItem().toString(),
cmbte.getSelectedItem().toString(),cmbtd.getSelectedItem().toString(),cmbref.getSelectedItem().toString(),
dedit.getDateFormatString(),txtmo.getText(),cmbty.getSelectedItem().toString(),cmbfr.getSelectedItem().toString()};
System.out.println(con.queryInsert("airtel", colon, inf));
table();
actualiser();
}
} catch (Exception e){JOptionPane.showMessageDialog(null, "Infos ajouter"+e.getMessage());}


Et mes fonction:

public String queryInsert(String nomTable, String[] contenuTableau){
seconnecter();
int i;
SQL = " INSERT INTO " + nomTable + " VALUES(";

for(i = 0; i <=contenuTableau.length - 1; i++){
SQL += "'" + contenuTableau[i] + "'";
if(i <contenuTableau.length - 1){
SQL +=",";
}
}
SQL +=")";
return this.executionUpdate(SQL);
}

public String queryInsert(String nomTable,String[] nomColone, String[] contenuTableau){
seconnecter();
int i;
SQL= " INSERT INTO " + nomTable + "(";
for(i = 0; i <=nomColone.length - 1; i++){
SQL+=nomColone[i];
if(i<nomColone.length-1){
SQL+=",";
}
}
SQL+=") VALUES(";
for(i = 0; i <=contenuTableau.length - 1; i++){
SQL+="'" +contenuTableau[i] + "' ";
if(i<contenuTableau.length-1){
SQL += ",";
}
}
SQL+=")";
return this.executionUpdate(SQL);
}


Merci pour votre aide!!!

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 août 2016 à 13:03
Bonjour,

Il faudrait que tu ajoutes plus d'infos sur tes exceptions quand tu les récupères, sinon tu ne peux pas savoir ce qui s'est exactement passé.

catch (Exception e) {
    e.printStackTrace();
    JOptionPane.showMessageDialog(null, // ou la JFrame courante
        "Erreur: "+e, e.getClass().getName(),
        JOptionPane.ERROR_MESSAGE);
}
0
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016
6 août 2016 à 13:25
Salut, je viens de corriger voici la nouvelle erreur qui m'affiche:

java.lang.NullPointerException

merci
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
6 août 2016 à 13:29
Outre le message d'erreur qui est affiché dans la pop-up, ce qui est important c'est le e.printStackTrace() qui lui est affiché dans la console.
C'est dans la stack que tu auras la ligne exacte du NullPointerException (c'est à dire une ligne de code où tu fais x.y() avec x==null)
0
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
7 août 2016 à 10:01
Bonjour,j'ai regarde mais je n'ai pas trop compris pouvez-vous m'expliquer d'avantage! Merci
Voici mon code:
 try{
if(txtid.getText().equals("") || cmbno.getSelectedItem().equals("") || cmbpr.getSelectedItem().equals("")
|| cmbte.getSelectedItem().equals("") || cmbtd.getSelectedItem().equals("") || cmbref.getSelectedItem().equals("")
|| dedit.getDateFormatString().equals("") || txtmo.getText().equals("") || cmbty.getSelectedItem().equals("")
|| cmbfr.getSelectedItem().equals("")){
JOptionPane.showMessageDialog(this, "SVP entre les infos complete");
} else {
String[] colon = {"id", "nom", "prenom","expediteur","destinateur", "reference", "date", "montant", "type","frais"};
String[] inf ={txtid.getText(),cmbno.getSelectedItem().toString(),cmbpr.getSelectedItem().toString(),
cmbte.getSelectedItem().toString(),cmbtd.getSelectedItem().toString(),cmbref.getSelectedItem().toString(),
dedit.getDateFormatString(),txtmo.getText(),cmbty.getSelectedItem().toString(),cmbfr.getSelectedItem().toString()};
System.out.println(con.queryInsert("airtel", colon, inf));
// table();
actualiser();
}
} catch (Exception e){e.printStackTrace();
JOptionPane.showMessageDialog(this,"Erreur: "+e,e.getClass().getName(), JOptionPane.ERROR_MESSAGE);}
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
7 août 2016 à 12:59
Si ton JOptionPane.showMessageDialog affiche un NullPointerException, alors sur la ligne d'avant, le e.printStackTrace() a affiché un message d'erreur sur la console.
Ce message contient toutes les données utiles pour résoudre ton problème, il faut que tu le récupères, cela te donnera la ligne exacte de l'erreur.

Exemple :

java.lang.NullPointerException
	at monpackage.MaClasse.mamethode(MonFichier.java:123)

Au cas où tu n'ai pas de console (mais dans ce cas je ne vois pas l'intérêt que tu as à faire des System.out.println dans ton code) on peut marquer le détail de l'erreur dans la popup, mais ce sera à enlever après débogage car ce n'est pas une info utile pour l'utilisateur.

e.printStackTrace();
JOptionPane.showMessageDialog(this,
    java.util.Arrays.toString(e.getStackTrace()),
    e.getClass().getName(),
    JOptionPane.ERROR_MESSAGE);

Remarque : pour que l'indication sur la ligne de l'erreur soit le plus utile possible, je t'invite à ne pas mettre trop de code sur la même ligne, mais de séparer les instructions autant que possible (ce sera plus lisible aussi).

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.getDateFormatString().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.getDateFormatString(), txtmo.getText(), (String) cmbty.getSelectedItem(), (String) cmbfr.getSelectedItem() };
        System.out.println(con.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);
}
0
alibabapro Messages postés 23 Date d'inscription lundi 18 avril 2016 Statut Membre Dernière intervention 23 novembre 2016 > KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024
7 août 2016 à 15:22
Bonjour, je viens de corriger mais il ya toujors le meme erreur a savoir
java.lang.NullPointerException

voici les lignes:
at Application.Formtairtel.btnaActionPerformed(Formtairtel.java:531)
il point cette ligne:
  System.out.println(con.queryInsert("airtel", colon, inf));


Et at Application.Formtairtel.access$400(Formtairtel.java:24)
il point la ligne
public class Formtairtel extends javax.swing.JFrame {


Mais je n'arrive toujours pas comprendre pour quoi.Merci!!
0