语法错误>>检查与您的MariaDB服务器版本相对应的手册,以获取在'?'附近使用的正确语法。在第1行

时间:2019-05-22 12:38:20

标签: java sql sqlexception

我想从下拉列表中选择设备ID后,其他字段的值会自动提取到文本字段中。 但是出现以下错误:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; 
    check the manual that corresponds to your MariaDB server version 
    for the right syntax to use near '?' at line 1

enter image description here

textField.addActionListener(new ActionListener() 
{
    public void actionPerformed(ActionEvent e) 
    {
        String DeviceID=textField.getSelectedItem().toString(); 
        String DeviceName=textField_1.getText();
        String SerialNumber=textField_2.getText();
        String ModelNumber=textField_3.getText();
        String Make=textField_4.getText();
        try 
        {
            Connection con=DB.getConnection();
            Statement ps=con.createStatement();

             ResultSet rs=ps.executeQuery("Select DeviceID,DeviceName,SerialNumber,ModelNumber,Make FROM deviceadd WHERE DeviceID =?");
             if(rs.next())
             {
            String ID = rs.getString("DeviceName");
            textField_1.setText(ID);
            String FN = rs.getString("SerialNumber");
            textField_2.setText(FN);
            String LN = rs.getString("ModelNumber");
            textField_3.setText(LN);
            String Des = rs.getString("Make");
            textField_4.setText(Des);
             }
        } 
        catch (SQLException e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
});

1 个答案:

答案 0 :(得分:0)

您正在使用的SQL语句用于准备的语句,您可以在其中添加参数。

您使用的是普通语句执行,其中?不会用导致SQL服务器无法理解的查询的参数替换。

您应该查看PreparedStatement有关如何使用它的信息(例如https://www.javatpoint.com/PreparedStatement-interface