2017-08-19 1 views
-3
try{is = new FileInputStream(new File(s)); 
     PreparedStatement ps; 
     ps= cn.prepareStatement("Update instructor set name ='?' ,gender ='?', image ='?' where instructorID =?"); 
      JOptionPane.showMessageDialog(null, "5"); 
     ps.setString(1,name); 
      JOptionPane.showMessageDialog(null, "4"); 
      ps.setString(2,gender); 
      JOptionPane.showMessageDialog(null, "3"); 
      ps.setBlob(3, is); 
      JOptionPane.showMessageDialog(null, "2"); 
      ps.setString(4, iden); 
      JOptionPane.showMessageDialog(null, "1"); 
      ps.executeUpdate(); 
      JOptionPane.showMessageDialog(null, "successfully updated"); 
     }catch(Exception e){ 
      JOptionPane.showMessage(null,"error1"); 
     } 

Je veux donc insérer ces variables dans l'instruction préparée, mais je reçois une erreur. Après avoir ajouté ces JOptionPanes au débogage, le programme affiche "5", puis "4" puis "error1". Ce que je pense signifie que la ligne ps.setString (2, genre); Échec de l'exécution Cependant, je ne peux pas trouver où je me suis trompé. Quelqu'un pourrait-il aider?java setString() ne fonctionne pas

+1

Veuillez imprimer l'exception. – Nicholas

+3

Utilisez 'e.printStackTrace()' pour afficher les exceptions. Voyant "error1" vous donne aucune information sur ce qui s'est passé. – Kayaman

Répondre

4

Suppression des guillemets autour des points d'interrogation. Dans le cas contraire, '?' serait interprété comme une chaîne littérale avec un seul point d'interrogation dans le:

ps= cn.prepareStatement("Update instructor set name =? ,gender =?, image =? where instructorID =?"); 

Actuellement, JDBC pense que votre requête a un seul paramètre, correspondant à la marque d'interrogation à la fin. Essayer de définir le paramètre numéro deux provoque l'exception.