如何在sql中转义“'”

时间:2012-06-13 09:19:02

标签: java sql hibernate

您好我正在数据库中搜索名称组合。我传递的组合如下

"firstName='" + firstName + "'", "middleName='" + middleName + "'", "lastName='" + lastName + "'"

这很好用。但问题出现在名称中有一些“'”,我该如何纠正它?例如:Johns'或Jerry's等导致异常

7 个答案:

答案 0 :(得分:9)

使用preparedStatement对你来说很容易

ps.executeUpdate("INSERT INTO tb_name values(?,?) WHERE id=?");
ps.setString(1,firstName);
ps.setString(2,middleName);
ps.setInt(3,id);
ps.execute();

答案 1 :(得分:4)

至少对于MySQL,你必须在之前添加另一个'

INSERT INTO table (column) VALUES ('this isn''t it');

答案 2 :(得分:2)

如果你正在使用Hibernate,你应该这样使用:

Query query = session.createQuery("from Something s where s.firstName = :firstName and s.middleName = :middleName and s.lastName = :lastName");
query.setString("firstName", firstName);
query.setString("middleName", middleName);
query.setString("lastName", lastName);

List<?> list = query.list();

希望这可以帮到你! 您可以在herehere

中查看更多内容

答案 3 :(得分:0)

您可以通过使用反斜杠\'转义它们来忽略SQL中的sinqle引号字符(')。

答案 4 :(得分:0)

    String firstName="X";
    String middleName="Y";
    String lastName="Z";

 "firstName='" + firstName + "',middleName='" + middleName + "',lastName='" + lastName + "'";

您可以使用它来输出

firstName='X',middleName='Y',lastName='Z'

答案 5 :(得分:-1)

试试这个:

firstName = firstName.replace("'" , "''");

使用PreparedStatement,你会更好。

答案 6 :(得分:-1)

我想以下内容也适用(至少对于MySQL):

SELECT login FROM usertable WHERE lastname="O'Neil";