2014-10-04 66 views
2
try { 
    String sql = "Insert into eyeglass (Brand, Model, Size, Color, Type, Case, Lens, Style, Warranty, Remarks) values(?,?,?,?,?,?,?,?,?,?)"; 

    pst = conn.prepareStatement(sql); 
    pst.setString(1, txtBrand.getText()); 
    pst.setString(2, txtModel.getText()); 
    pst.setString(3, txtSize.getText()); 
    pst.setString(4, txtColor.getText()); 
    pst.setString(5, txtType.getText()); 
    pst.setString(6, txtCase.getText()); 
    pst.setString(7, txtLens.getText()); 
    pst.setString(8, txtStyle.getText()); 
    pst.setString(9, txtWarranty.getText()); 
    pst.setString(10, txtRemarks.getText()); 
    pst.execute(); 
    JOptionPane.showMessageDialog(null, "Saved"); 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null, e); 
} 

我得到ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Case, Lens, Style, Warranty, Remarks) values(",",",",",",",",",")' in line 1,我不明白为什么会发生。我的SQL语法错误

+3

你有没有在MySQL中试过相同的sql?例如:打印sql,将其复制并在mysql中运行。我认为你有报价问题。单个'''或双'''。 – 2014-10-04 09:01:07

+0

无关...... joptionpane会像“java.lang.Exception ....”一样使用e.getMessage()或e.printStackTrace(); – khandelwaldeval 2014-10-04 09:22:17

回答

4

CASEMySQL reserved word。要么逃避这个词,要么改变数据库的列名,后者最好避免彻底逃避。

String sql = 
    Insert into eyeglass 
    (Brand, Model, Size, Color, Type, `Case`, Lens, Style, Warranty, Remarks) values(?,?,?,?,?,?,?,?,?,?)"; 
+1

谢谢@Reimeus :)我终于修正了错误,我真的不知道CASE已经是一个保留字了,呵呵呵,再次感谢:) – RoyalRyt 2014-10-04 09:11:12