错误:参数索引超出范围(39>参数数量,即38)

时间:2019-09-20 13:00:32

标签: java sql jdbc prepared-statement

我在动态Java项目中遇到此错误。

java.sql.SQLException:参数索引超出范围(39>参数数量,即38)。

我检查了数据库列数是38,“?” charachter计数是38,字段计数是38,myStmt.set计数是38,但仍然出现此错误。我正在尝试在mysql中编写3个表,我想我的方法是错误的,请您能帮我吗?

(?<![A-Z0-9])       # negative lookbehind, make sure we haven't alphanum before
[A-Z0-9]{7}         # 7 alphanumerics
(?![A-Z0-9])        # negative lookahead, make sure we haven't alphanum after

1 个答案:

答案 0 :(得分:1)

您的代码包含该行

      myStmt2 = myConn2.prepareStatement(sql);

我想你想写

      myStmt2 = myConn2.prepareStatement(sql2);  // note: sql2 not sql

否则,您将再次准备第一个SQL语句,并将参数设置为第二个。

同一件事发生在

      myStmt3 = myConn3.prepareStatement(sql);

您要在这里使用sql3而不是sql

尝试将每个SQL操作提取到单独的方法中。一方面,这将减少方法的大小。另外,您会很快发现错误:第二条方法中第一条语句的SQL字符串超出范围。另外,我不确定您在用什么代码编写代码:任何值得使用的IDE都会警告您变量sql2sql3未使用。