2

我使用 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 不会在语句字符串中查找问号吗?我在声明中使用了一个问号,但似乎被忽略了!

4

2 回答 2

1

正确的方法是:

String sql = "SELECT * FROM `as` WHERE `as`.ip_range LIKE ?";
statement.setString(1, "%" + clinetIP + "%");

参数绑定在文字中不起作用!

于 2013-09-06T08:09:50.293 回答
1

尝试这个

String sql = "SELECT * FROM `as` WHERE `as`.ip_range LIKE ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "%" + clientIP + "%");
于 2013-09-06T08:10:04.527 回答