如何在JDBC中使用类似MySQL的运算符?

She*_*yla 6 java mysql jdbc

我的代码中有以下语法,但是当我尝试LIKE在JDBC中使用运算符时它不起作用.当它完全相同时,它以这种方式工作正常:

ResultSet resultSet = statement.executeQuery("SELECT * 
                                                FROM drawings 
                                               WHERE name = '"+ DT +"'");
Run Code Online (Sandbox Code Playgroud)

但是,如果我想使用LIKE运算符作为通配符进行搜索,我会不断收到错误消息"%"不是有效字符.我怎样才能正确使用LIKE运算符?

Bal*_*usC 18

来自评论:

query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'");
Run Code Online (Sandbox Code Playgroud)

这不编译.假设这DT是一个变量,那么它应该看起来像

query = "SELECT * FROM drawings WHERE name LIKE '%" + DT + "%'";
Run Code Online (Sandbox Code Playgroud)

(注意语法高亮,%必须是SQL字符串的一部分!)

然而,在SQL查询串联那样的用户控制的字符串变量放在门打开成功的SQL注入 攻击.了解如何使用PreparedStatement和使用它.

String sql = "SELECT * FROM drawings WHERE name LIKE ?";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "%" + DT + "%");
resultSet = preparedStatement.executeQuery();
// ...
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢Balus ......现在我理解你对JSP的评论...我肯定会考虑到这一点并避免在我的问题上使用错误的标签...再次感谢,你的答案解决了我有2天的问题,我也在实施preparedStatement.问候 (2认同)