SQL语句没有添加单引号('')

时间:2018-03-02 13:00:15

标签: java mysql sql

我正在编写一个java程序,我有一个当前输出错误的SQL语句: 所以代码是:

spring-boot-starter-web

,输出为:

        String sql = "SELECT Name from Users WHERE Name LIKE "+t;

但我需要用单引号将其添加为:

SELECT Name from Users WHERE Name LIKE David

如何添加这些引号?

非常感谢您的帮助

2 个答案:

答案 0 :(得分:4)

这是一个非常常见的错误。我猜你正在使用Statement类创建查询并执行它。

我想建议你使用准备好的陈述。它是您的问题,并可以帮助您解决更多问题。

PreparedStatement ps = yourconn.prepareStatement("select name from users where name like ?");

ps.setString(1,yoursearchedusername);

ResultSet rs = ps.executeQuery();

这会添加你的报价。此外,它将防止未来的SQL注入攻击。

您当前的查询还会导致您的实际查询出现问题。要么 ?或者任何其他sql外卡。准备好的语句避免了所有这些问题,并通过将SQL编译并存储在db层(如果已启用)来帮助提高性能

答案 1 :(得分:1)

使用预准备语句来阻止sql注入。

String searchedName = "cdaiga";

String sql = "SELECT Name from Users WHERE UPPER(Name) LIKE '%?%'";

PreparedStatement preparedStatement = dbConnection.prepareStatement(sql);
preparedStatement.setString(1, (searchedName!=null? searchedName.toUpper(): ""));

// execute the SQL stetement
preparedStatement .executeUpdate();

ResultSet rs = preparedStatement.executeQuery();

// print the results if any is returned
while (rs.next()) {
   String name= rs.getString("Name");    
   System.out.println("name: " + name);
}

请注意,不区分大小写的搜索是合适的。