【问题标题】:Mysql exception"out of range"?Mysql异常“超出范围”?
【发布时间】:2014-11-12 09:22:46
【问题描述】:

我正在从事基于摇摆的项目并使用准备好的语句,但它给出了超出范围之类的异常,并且当我使用参数并且不输入“?”时但很简单?然后显示异常,如“ 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) {
            }
        }
    }
}

【问题讨论】:

  • 请添加该例外。我的意思是整个堆栈跟踪 ofc。
  • jdbc4.mysqlSyntaxErroException:您的 SQL 语法有错误。请检查与您的 MySql 服务器版本相对应的手册,以便在第 1 行的“?,?)”附近使用正确的语法
  • 在我们为您提供帮助之前,您应该检查以下建议: 1. 名称是否正确(列名和表名)? 2. 列类型是否正确(都必须是 VARCHAR 或类似类型)? 3. .setString() 语句中你们两个方法的返回字符串是你要保存的吗?
  • No Breakfast 是 int 数据类型而 date 是 VARCHAR 而列名和表名是正确的。
  • 现在我将 int 更改为 VARCHAR 但仍然是相同的异常。

标签: java mysql swing jdbc


【解决方案1】:

替换

 pst.executeUpdate(sql);

通过

pst.executeUpdate();

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

【讨论】:

  • 当在PreparedStatement 上调用executeXXX(String) 方法时,JDBC 驱动程序必须抛出异常。这是 MySQL 中的一个错误,它甚至会尝试实际执行它(这会导致语法错误)。
猜你喜欢
  • 2014-03-06
  • 2011-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多