【问题标题】:error java.sql.SQLException: Parameter index out of range错误 java.sql.SQLException:参数索引超出范围
【发布时间】:2013-02-06 22:05:38
【问题描述】:

我仍然收到错误,我没有为 1 个参数提供值,我不知道出了什么问题。

ps("INSERT INTO slide (presentation_id, duration, position, type) values (?, ?, ?, ?)     ").set(this.getId()).set(slide.getDuration()).set(slide.getPosition()).set(slide.getType().ordinal()).update();

在表中,我只为设置了自动增量的一列提供值。

对我来说一切似乎都很好,但请提供任何建议,可能有什么问题。

【问题讨论】:

  • ps是继承方法,获取String作为查询,next用作prepareStatement方法的参数
  • 您收到的完整错误消息是什么?

标签: java


【解决方案1】:

不要在列列表中包含 auto inc 字段。

ps("INSERT INTO slide (duration, position, type) values (?, ?, ?)     ").set(slide.getDuration()).set(slide.getPosition()).set(slide.getType().ordinal()).update();

【讨论】:

  • 但presentation_id是与幻灯片相关的演示文稿的外键
  • 我相信presentation_id不是slide表的pk。
【解决方案2】:

尝试做一些更干净的东西而不是这个“训练代码”

这是一个例子:

String insertTableSQL = "INSERT INTO DBUSER"
        + "(USER_ID, USERNAME, CREATED_BY, CREATED_DATE) VALUES"
        + "(?,?,?,?)";
PreparedStatement preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setInt(1, 11);
preparedStatement.setString(2, "mkyong");
preparedStatement.setString(3, "system");
preparedStatement.setTimestamp(4, getCurrentTimeStamp());
// execute insert SQL stetement
preparedStatement .executeUpdate();

下面是链接:http://www.mkyong.com/jdbc/jdbc-preparestatement-example-insert-a-record/

【讨论】:

  • 我知道这个方法但是我必须使用这个ps继承的方法
猜你喜欢
  • 2020-03-17
  • 1970-01-01
  • 2018-07-04
  • 2013-04-18
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多