我的代码中有以下语法,但是当我尝试LIKE在JDBC中使用运算符时它不起作用.当它完全相同时,它以这种方式工作正常:
ResultSet resultSet = statement.executeQuery("SELECT *
FROM drawings
WHERE name = '"+ DT +"'");
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用LIKE运算符作为通配符进行搜索,我会不断收到错误消息"%"不是有效字符.我怎样才能正确使用LIKE运算符?
Bal*_*usC 18
来自评论:
Run Code Online (Sandbox Code Playgroud)query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'");
这不编译.假设这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)
| 归档时间: |
|
| 查看次数: |
31214 次 |
| 最近记录: |