Comment savoir si executeQuery est null ?

said_dias_01
Messages postés
103
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
30 décembre 2017
- 20 mars 2015 à 12:09
KX
Messages postés
16581
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 juillet 2022
- 20 mars 2015 à 19:23
Bonjour, voila mon code java ,Le problème que le message "Produit introuvable" ne s'affiche pas lorsque executeQuery est null
try{
	 {
	Class .forName ("sun.jdbc.odbc.JdbcOdbcDriver" );
	Connection cn =DriverManager .getConnection 
        ("jdbc:odbc:Conn_DB");
String sql ="select * from  t_produit  where id='" + t_rechercher.getText() + "'";
Statement cmd=cn.createStatement();
ResultSet Myreader=cmd.executeQuery(sql);
 while (Myreader.next())
{
             if(Myreader.wasNull() )
         {
      	     JOptionPane.showMessageDialog(null,"Produit Introvabl","Gestion  
             Para F",JOptionPane.ERROR_MESSAGE);
             break;
          } 
             t_des.setText(Myreader.getString(1));
             t_pu.setText(Myreader.getString(2));
 }
             Myreader.close();
	                               }
                                       }
					catch (ClassNotFoundException e ){
					System .out. println ("Pilote introuvable:" + e.getMessage () );
					}
					catch (SQLException e){
					System .out. println ("Erreur de données:" + e.getMessage () );
					}  



Le probleme que le message "Produit introuvabl" ne s'affic

3 réponses

cs_Julien39
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
366
20 mars 2015 à 14:40
Salut,

Ton executeQuery n'a pas à être null, il doit sans doute être vide.

Tu peux vérifier s'il est vide et afficher un message d'erreur d'en ce cas à l'aire de la méthode hasNext()
1
KX
Messages postés
16581
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
26 juillet 2022
124
20 mars 2015 à 19:23
Bonjour,

Juste une remarque : le wasNull permet d'identifier si la case qui vient d'être appelée était NULL, ce qui est utile pour les types primitifs (int par exemple) qui vont obtenir une valeur par défaut (0 pour int) alors qu'on pourrait vouloir différencier le NULL du 0.

Exemple :

Integer val = Myreader.getInt(1); // val==0 si NULL
if (Myreader.wasNull())
    val = null;

Donc clairement l'utilisation d'un wasNull vient immédiatement après un getType et non juste après un next() où le résultat ne va pas avoir de sens.
1
said_dias_01
Messages postés
103
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
30 décembre 2017

20 mars 2015 à 16:27
Merci cs_Julien39

boolean exist = false;
 while ( Myreader.next() )
{
    exist = true;
t_des.setText(Myreader.getString(1));
t_pu.setText(Myreader.getString(2));
}
if (!exist)
   JOptionPane.showMessageDialog(null,"Produit introvable","Attention",JOptionPane.ERROR_MESSAGE);
0