【问题标题】:java.sql.SQLException: Parameter index out of range (5 > number of parameters, which is 4)java.sql.SQLException:参数索引超出范围(5 > 参数个数,即 4)
【发布时间】:2017-10-03 09:30:59
【问题描述】:
try{
    String query="insert into result(std_id,exam_id,date,score,status) values(?,?,?,?,?);";
    PreparedStatement pstmt=DatabaseConnector.getPreparedStatement(query);
    pstmt.setInt(1,rd.getStd_id());
    pstmt.setInt(2,rd.getEx_id());
    pstmt.setString(3,rd.getDate());
    pstmt.setDouble(4,rd.getScore());
    pstmt.setInt(5,rd.getStatus());
    **int i=pstmt.executeUpdate();** //error line line 31
    if(i==1){
        result=Results.SUCCESS;
    }
    else
        result=Results.FAILURE;
}

参数列表看起来正确但仍然显示上述错误....

【问题讨论】:

  • 正确格式化你的代码......
  • 异常它自己表明“结果”接受 4 个输入参数,但您传递了 5 个
  • 您确定这是您实际运行的代码,它产生了错误吗?我看到了五个通配符,而且代码在我看来还不错,至少乍一看是这样。
  • getPreparedStatement 定义在哪里?
  • 懒得检查,但是参数是从 1 还是从 0 开始索引的?如果确实从 1 作为您的代码所建议的那样,那是 JDBC 家伙 AFAIC 的一个奇怪的设计决定。

标签: java mysql parameters


【解决方案1】:

您的列名“日期” 会产生歧义,因为日期是数据库中的数据类型。 更改列的名称,它的工作原理。

【讨论】:

  • 是的,这就是问题所在。 (5>参数个数,即4)
猜你喜欢
  • 1970-01-01
  • 2013-04-18
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 2022-01-04
相关资源
最近更新 更多