java.sql.SQLException:参数索引超出范围(4 > 参数个数,即 3)
Posted
技术标签:
【中文标题】java.sql.SQLException:参数索引超出范围(4 > 参数个数,即 3)【英文标题】:java.sql.SQLException: Parameter index out of range (4 > number of parameters, which is 3) 【发布时间】:2020-08-25 21:27:32 【问题描述】:private void changeButtonActionPerformed(java.awt.event.ActionEvent evt)
try
Connection con = getConnection();
PreparedStatement pa = con.prepareStatement("Uptade mstock Set (mehsul_adi, mehsul_ceki , mehsul_tarix ) values(?,?,?) WHERE mehsul_kodu='?' ");
pa.setString(1, mehsul_adi.getText());
pa.setString(2,mehsul_ceki.getText());
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String tarix = dateFormat.format(mehsul_tarix.getDate());
pa.setString(3, tarix);
pa.setInt(PROPERTIES, Integer.valueOf(mehsul_kodu.getText()));
pa.executeUpdate();
JOptionPane.showMessageDialog(null,"Yeniliklər yadda saxlanıldı.");
catch (Exception e)
e.printStackTrace();
【问题讨论】:
为什么这个问题被标记为 c#?不要使用额外的标签来吸引更多关注您的问题。这类事情在这里不顺利。 请注意,您使用硬编码值 1、2 和 3 指向索引,而您的数据结构(您忽略包含)可能是从零开始的,这意味着索引应该是 0、1和 2. 尝试使用 0,1 和 2 而不是 1,2 和 3 @MarsAtomic,@ChetanRanpanya,PreparedStatement
start from 1 的参数索引
【参考方案1】:
代码sn-p有几个问题需要解决:
UPDATE
查询的 SQL 语法无效
第四个查询参数的索引可能不正确 (pa.setInt(PROPERTIES,...)
)
对于可自动关闭的Connection
对象,建议使用try-with-resources
。
将 DB 更新从 actionPerformed
实现中移出到单独的方法 updateMstock()
话虽如此,下面的代码应该可以解决所有提到的问题:
private void changeButtonActionPerformed(java.awt.event.ActionEvent evt)
updateMstock();
private void updateMstock()
try (Connection con = getConnection())
PreparedStatement pa = con.prepareStatement(
"UPDATE mstock SET mehsul_adi=?, mehsul_ceki=?, mehsul_tarix=? WHERE mehsul_kodu=? "
);
pa.setString(1, mehsul_adi.getText());
pa.setString(2, mehsul_ceki.getText());
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String tarix = dateFormat.format(mehsul_tarix.getDate());
pa.setString(3, tarix);
pa.setInt(4, Integer.valueOf(mehsul_kodu.getText()));
pa.executeUpdate();
JOptionPane.showMessageDialog(null,"Yeniliklər yadda saxlanıldı.");
catch (Exception e)
e.printStackTrace();
【讨论】:
非常感谢 如果您认为答案很好,最好点赞/将其标记为已接受(打绿色勾号),而不是仅仅发表“谢谢”评论:)以上是关于java.sql.SQLException:参数索引超出范围(4 > 参数个数,即 3)的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException:索引处缺少 IN 或 OUT 参数:: 1
java.sql.SQLException: 调用中无效的参数
java.sql.SQLException:调用中的参数无效:getBytes()
以下错误是啥意思:java.sql.sqlexception 在索引处缺少输入或输出参数
java.sql.SQLException:spring boot中的参数索引超出范围(6>参数个数,即5)
java.sql.SQLException: 调用中无效的参数DSRA0010E: SQL 状态 = null,错误代码 = 17,433