Mysql异常“超出范围”?

时间:2014-09-18 06:37:34

标签: java mysql swing jdbc

我在基于摇摆的项目中工作,并使用预备语句,但它提供了超出范围的异常,当我使用参数时,并没有放置'?'但只是?然后显示例外" jdbc语法错误检查手册附近'?,?'在第一线"我很困惑发生了什么。检查我的代码是什么问题?

private void AddActionPerformed(java.awt.event.ActionEvent evt) {
    if (((JTextField) chose.getDateEditor().getUiComponent()).getText() == null) {
        String sql = "INSERT INTO expance1 ( Breakfast,Date) VALUES (?,?)";
    } else {
        String sql = "INSERT INTO expance1 ( Breakfast,Date) VALUES (?,?)";
        try {
            pst = conn.prepareStatement(sql);
            pst.setString(1, breakfast.getText());
            pst.setString(2, ((JTextField) chose.getDateEditor().getUiComponent()).getText());
            pst.executeUpdate(sql);
            JOptionPane.showMessageDialog(null, "insert sucessfully");
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        } finally {
            try {
                rs.close();
                pst.close();

            } catch (Exception e) {
            }
        }
    }
}

1 个答案:

答案 0 :(得分:6)

替换

 pst.executeUpdate(sql);

通过

pst.executeUpdate();

准备时,SQL查询已经传递给语句。你不能再次通过它。传递它执行文字SQL查询,而不是准备好的查询。