2016-05-09 3 views
0

Ich möchte eine Nachricht (die Zeile ist nicht im Bestand verfügbar), wenn die Zeile in der Datenbank nicht verfügbar ist. Ich versuche den folgenden Code aber den Fehler ....!Überprüfen Sie, ob die Zeile nicht in der mySQL-Tabelle verfügbar ist

//-Code

try { 

      Connection con = Database.mySqlCon(); 
      String sql = "SELECT count(*) FROM stock WHERE idProduct =?"; 
      PreparedStatement ps = con.prepareStatement(sql); 
      ResultSet rs = ps.executeQuery(); 

      int count = 0; 
      while (rs.next()){ 
       count = count + 1; 
      } 

      if (count == 1) { 

       JOptionPane.showMessageDialog(null, "Item is available in Stock" 
      } else { 
       JOptionPane.showMessageDialog(null, "ID:" + txtS.getText() + "is not available in the Stock please update the Stock"); 

      } 
     } catch (Exception e) { 

      JOptionPane.showMessageDialog(null, e); 
      e.printStackTrace(); 
} 

// Fehler ....

java.sql.SQLException: No value specified for parameter 1 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:896) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:885) 
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:860) 

..... ..... .... .... Bitte helfen Sie mir.

Antwort

1

Sie setzen nicht den Wert für? in Ihrer SELECT Aussage.

Da es eine ID ist, nehme ich an, es ist ein Int.

Sie benötigen:

Connection con = Database.mySqlCon(); 
String sql = "SELECT count(*) FROM stock WHERE idProduct =?"; 
PreparedStatement ps = con.prepareStatement(sql); 
ps.setInt(1, value); 

ResultSet rs = ps.executeQuery(); 

EDIT

Versuchen Sie, Ihre Methodik dieser Wechsel:

Connection con = Database.mySqlCon(); 
String sql = "SELECT count(*) FROM stock WHERE idProduct =?"; 
PreparedStatement ps = con.prepareStatement(sql); 
ps.setInt(1, value); 

ResultSet rs = ps.executeQuery(); 

if(rs.next()){ 
    JOptionPane.showMessageDialog(null, "Item is available in Stock" 
} 
else { 
    JOptionPane.showMessageDialog(null, "ID:" + txtS.getText() + "is not available in the Stock please update the Stock"); 
} 
+0

Opsss Dank @ Matt ich mehr Problem mit i dem Reihen-ID eingeben, die nicht in der SQL-Tabelle ist i die erste Zeile der Tabelle statt Massage bekam ... .. –

+0

@MuhammadKashif Ich habe eine Bearbeitung hinzugefügt. Probieren Sie es aus und lassen Sie es mich wissen – Matt

+0

Ihre Bearbeitung ans funktioniert nicht perfekt ....... –

0

Thanks @ Matt Hilfe

ich eine perfekte Antwort bekam durch mit diesem Code ......

try {

  Connection con = Database.mySqlCon(); 
      String sql = "SELECT count(*) FROM stock WHERE idProduct =?"; 
      PreparedStatement ps = con.prepareStatement(sql); 
      ps.setString(1, txtS.getText()); 
      ResultSet rs = ps.executeQuery(); 



      int count = 0; 
      while (rs.next()){ 

       // code update here 

       count = rs.getInt(1); 
       // count = count + 1; 
      } 

      if (count == 1) { 
Verwandte Themen