您好我正在数据库中搜索名称组合。我通过如下组合
"firstName='" + firstName + "'", "middleName='" + middleName + "'", "lastName='" + lastName + "'"
这工作正常。但问题出现在名称中有一些“'”的地方,我该如何纠正它?例如:Johns 或 Jerry 等导致异常
使用preparedStatement对你来说很容易
ps.executeUpdate("INSERT INTO tb_name values(?,?) WHERE id=?");
ps.setString(1,firstName);
ps.setString(2,middleName);
ps.setInt(3,id);
ps.execute();
至少对于 MySQL,您必须在'
前面加上另一个:
INSERT INTO table (column) VALUES ('this isn''t it');
如果你使用 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();
您可以通过使用反斜杠转义 SQL 中的单引号字符 (') 来忽略它们\'
。
String firstName="X";
String middleName="Y";
String lastName="Z";
"firstName='" + firstName + "',middleName='" + middleName + "',lastName='" + lastName + "'";
您可以使用它来获取输出
firstName='X',middleName='Y',lastName='Z'
尝试这个:
firstName = firstName.replace("'" , "''");
改用 PreparedStatement ,你会更好。
我想以下方法也有效(至少对于 MySQL):
SELECT login FROM usertable WHERE lastname="O'Neil";