String sql = "select ZYName,YLName,YDY,YX,GX,ZhongYao.ZZ as ZZ from Yaolei,ZhongYao where Yaolei.YLID=ZhongYao.YLID and LTRIM(RTRIM(ZYName))='?'"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1,name); org.apache.jasper.JasperException: javax.servlet.ServletException: com.microsoft.sqlserver.jdbc.SQLServerException: 索引 1 超出范围。
时间: 2024-03-04 19:48:16 浏览: 70
在这段代码中,你使用了一个带有参数的SQL查询语句,并且使用了PreparedStatement来设置查询参数。然而,在这个错误信息中,它提示了“索引 1 超出范围”的错误,这通常是由于在设置参数时出现了问题。
具体来说,你在代码中使用了一个占位符“?”,然后在PreparedStatement中调用了setString方法来设置参数。但是,在这个方法中,你需要指定占位符的位置,也就是参数的索引。因为你只有一个占位符,所以参数的索引应该是1,但是错误提示中却提示了“索引 1 超出范围”,这说明你可能没有正确设置参数的位置。
解决这个问题的方法是,确保你在调用setString方法时,指定的参数索引与查询语句中占位符的位置一致。在这个例子中,应该将setString方法的参数改为1,像这样:
```
pstmt.setString(1, name);
```
这样就可以正确设置查询参数,避免“索引超出范围”的错误。
阅读全文