Java заполняет jcombobox из ошибки базы данных mysql

У меня есть ошибка, когда я пытаюсь получить данные из моей базы данных sql в поле со списком j:

«У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на наличие правильной синтаксической ошибки»

public class NewJFrame extends javax.swing.JFrame {
Connection con=null;
PreparedStatement pst=null;
ResultSet rs=null;
/** Creates new form NewJFrame */
public NewJFrame() {
    initComponents();
    fillcombo();

}
private void fillcombo(){
try{
con=Connect.ConnectDB();
String sql="select * from leave";
pst=con.prepareStatement(sql);
rs=pst.executeQuery();
if(rs.next())
 {
     String nm=rs.getString("combo");
jComboBox1.addItem(nm);
 }
  }
catch(Exception e)
{ JOptionPane.showMessageDialog(null, e);
 }

 }

person Aboo Sidhu    schedule 02.01.2015    source источник


Ответы (1)


Пожалуйста, не делайте поля из Connection или Statement. LEAVE — это зарезервированное слово mysql (поэтому таблица с именем быть сбежавшим). Кроме того, пожалуйста, не выбирайте splat, если вам нужен только один столбец. Наконец, вам следует close использовать ресурсы базы данных (при условии, что вы используете Java 7 или более позднюю версию, вы можете использовать try-with-resources иначе вам понадобится блок finally) что-то вроде

String sql = "SELECT combo FROM `leave`";
try (Connection con = Connect.ConnectDB();
        PreparedStatement pst = con.prepareStatement(sql);
        ResultSet rs = pst.executeQuery()) {
    if (rs.next()) {
        String nm = rs.getString("combo");
        jComboBox1.addItem(nm);
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(null, e);
}
person Elliott Frisch    schedule 02.01.2015