小编典典

PreparedStatement忽略查询中的参数:java.sql.SQLException:参数索引超出范围(1>参数数量,为0)

java

我使用java和jdbc驱动程序(java.sql),并获得了以下代码:

String clinetIP = "220.181.108.89";
String sql = "SELECT * FROM `as` WHERE `as`.ip_range LIKE '%?%'";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, clinetIP);

我得到:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

在执行statement.setString(1,clinetIP)时。

这是为什么?statement.setxxx是否在语句字符串中查找问号?我在声明中使用了一个问号,但它似乎被忽略了!


阅读 274

收藏
2020-11-26

共1个答案

小编典典

试试这个

String sql = "SELECT * FROM `as` WHERE `as`.ip_range LIKE ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "%" + clientIP + "%");
2020-11-26