这个问题在这里已有答案:
我已经尝试过搜索这个,但后来我不知道该如何描述它。
我有一个方法,从hashmap格式化一些数据进入mySQL表:
private String valuesList() {
String valuesList = "";
HashMap<String,String> data = getData();
for(Map.Entry<String, String> entry : data.entrySet()) {
String value=entry.getValue();
valuesList+="'"+value+"',";
}
valuesList = valuesList.substring(0, valuesList.length() - 1);
return valuesList;
}
大多数情况下工作正常,但在某些情况下,其中一个值有一个撇号,这导致输出如下:
'4577314','18-02-2017','null','4566974','null','Overseas Domestic Workers' Rights Bill','1124','null'
最后请注意“海外家庭工人权利法案”。我认为通过改变很容易解决
valuesList+="'"+entry.getValue()+"',";
至
valuesList+="'"+entry.getValue().replace("'","")+"',";
但该方法现在在该行抛出一个空指针异常。事实上,对.trim()
等字符串的任何改变都会做同样的事情,扔掉一个null
。
我现在完全被难倒了
您可以像这样从值中转义引号
value = value.replaceAll("'","''");