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

时间:2011-07-06 16:36:55

标签: java mysql jdbc

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

ResultSet resultSet = statement.executeQuery("SELECT * 
                                                FROM drawings 
                                               WHERE name = '"+ DT +"'");

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

1 个答案:

答案 0 :(得分:16)

来自评论:

query=("SELECT * FROM drawings WHERE name LIKE '"%DT%"'");

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

query = "SELECT * FROM drawings WHERE name LIKE '%" + DT + "%'";

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

但是,在SQL查询中连接用户控制的字符串变量会使 wide 门打开,以便成功SQL injection attacksLearn如何使用PreparedStatement并改为使用它。

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