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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 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 371
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 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
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 1
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
Rejoignez-nous