2016-06-05 10 views
1

Ich muss Zeilen in einer JTable basierend darauf, ob ein Benutzer wählt "Ja" oder "Nein" löschen. Das Problem, das ich jetzt habe, ist, dass ich einen Fehler sagen ‚überprüfen Sie die richtige Syntax in der Nähe“.Wie lösche Zeile in JTable basierend auf Combo Auswahl

if(searchCombo_Job.getSelectedItem().toString().equals("Question ID")){ 
    String search = searchTxt_Job.getText(); 
    int reply = JOptionPane.showConfirmDialog(null, "This will delete all rows selected. Proceed?", "Confirm Delete", JOptionPane.YES_NO_OPTION); 
    if (reply == JOptionPane.YES_OPTION) { 
     dlt = "DELETE from job where question_id = " + search + "' ";       
     pst = conn.prepareStatement(dlt); 
     //pst.setString(1, search); 
     ((DefaultTableModel)jobCategoryTable.getModel()).removeRow(jobCategoryTable.getSelectedRow()); 
     pst.execute(); 
    } 
    else { 
     fillTableJobCategory(); 
    } 
+1

Sie versuchen, Ihren Suchwert in einfache Anführungszeichen zu setzen, aber Sie haben kein führendes Zitat dafür. Wenn Sie SO-Fragen stellen, vergewissern Sie sich, dass Sie zusätzlich zu der gesamten Nachricht angeben, wann Sie die Nachricht erhalten haben. Ich gehe davon aus, dass diese beim Ausführen als Fehler beim Parsen der SQL-Anweisung vor dem Ausführen angezeigt wird. – arcy

+0

1) Um eine bessere Hilfe zu erhalten, geben Sie ein [MCVE] oder [Short, Self Contained, Correct Example] (http://www.sscce.org/) ein. 2) Kopieren Sie immer die Fehler- und Ausnahmeausgabe! –

Antwort

0

Wenn job.question_id ein String-Feld ist, würde ich

dlt = "DELETE from job where question_id = '" + search.trim() + "' "; 

verwenden Abfrageparameter verwenden um diesen Fehler zu vermeiden. Die Linie dann

dlt = "DELETE from job where question_id = ?"; 

Parameter sind auch eine Prävention für SQL-Injection-Angriffe sein würde.

Verwandte Themen