java - Mysql异常“超出范围”?

标签 java mysql swing jdbc

我在基于 swing 的项目中工作并使用准备好的语句,但它会给出异常,例如超出范围,并且当我使用参数并且不输入“?”时但简单吗?然后显示异常,如“ jdbc syntax error check the manual near '?,?'在第一行“我很困惑发生了什么。检查我的代码有什么问题吗?

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) {
            }
        }
    }
}

最佳答案

替换

 pst.executeUpdate(sql);

通过

pst.executeUpdate();

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

关于java - Mysql异常“超出范围”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25905835/

相关文章:

java - 调用两个同步方法时死锁

php - 使用逗号分隔值 mysql 进行搜索

mysql - Yii2:如何从不同表中选择多个字段

java - 仅显示标题栏,不显示 JFrame

java - 如何将 xml 变成超链接?

java - 以编程方式添加 Spring 拦截器,无需应用程序描述符

java - 在线程中获取和设置标志变量

java - 如何在selenium java中使用机器人类在 headless 浏览器中上传文件

php - 如果数据库中没有结果,则显示 "result not found"

java - 从另一个类调用 JTree