4

您好我正在数据库中搜索名称组合。我通过如下组合

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

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

4

7 回答 7

11

使用preparedStatement对你来说很容易

ps.executeUpdate("INSERT INTO tb_name values(?,?) WHERE id=?");
ps.setString(1,firstName);
ps.setString(2,middleName);
ps.setInt(3,id);
ps.execute();
于 2012-06-13T09:25:01.207 回答
4

至少对于 MySQL,您必须在'前面加上另一个:

INSERT INTO table (column) VALUES ('this isn''t it');
于 2012-06-13T09:20:23.877 回答
3

如果你使用 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();

希望这可以帮到你!你可以在这里这里看到更多

于 2012-06-13T10:01:56.567 回答
0

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

于 2012-06-13T09:20:34.123 回答
0
    String firstName="X";
    String middleName="Y";
    String lastName="Z";

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

您可以使用它来获取输出

firstName='X',middleName='Y',lastName='Z'
于 2012-06-13T09:29:03.967 回答
-1

尝试这个:

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

改用 PreparedStatement ,你会更好。

于 2012-06-13T09:21:46.090 回答
-1

我想以下方法也有效(至少对于 MySQL):

SELECT login FROM usertable WHERE lastname="O'Neil";
于 2012-06-13T09:24:42.887 回答