java - preparedstatement用法 - preparedstatement sql注入



在'?'附近使用正确的语法 (2)

我有一个Java代码:

String searchPerson = "select * from persons where surname like ? and name like ?";
//connect to DB
PreparedStatement statement = connect.prepareStatement(searchPerson);
statement.setString(1,"%"+ surname + "%");
statement.setString(2, "%" + name + "%");
ResultSet resultPerson = statement.executeQuery(searchPerson);
//..code

然后我有SQLException:

你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,在“?”附近使用正确的语法。

https://src-bin.com


Answer #1

您应该执行不带参数的PrepareStatement ,如下所示:

statement.executeQuery()

使用String参数调用executeQuery将按原样执行提供的查询(不带绑定参数)。


Answer #2

试试statement.setString(1,"'%"+ surname + "%'");





prepared-statement