您好我正在数据库中搜索名称组合。我传递的组合如下
"firstName='" + firstName + "'", "middleName='" + middleName + "'", "lastName='" + lastName + "'"
这很好用。但问题出现在名称中有一些“'”,我该如何纠正它?例如:Johns'或Jerry's等导致异常
答案 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();
中查看更多内容
答案 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";