Java奇怪的问题更改字符串
我试着寻找这个,但我不确定什么时候该如何描述它 我有一种方法,可以将hashmap中的一些数据格式化到mySQL表中:Java奇怪的问题更改字符串,java,Java,我试着寻找这个,但我不确定什么时候该如何描述它 我有一种方法,可以将hashmap中的一些数据格式化到mySQL表中: private String valuesList() { String valuesList = ""; HashMap<String,String> data = getData(); for(Map.Entry<String, String> entry : data.entrySet()) { String
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;
}
请注意结尾的“海外家庭佣工权利法案”。我认为通过改变来解决这个问题很容易
valuesList+="'"+entry.getValue()+"',";
到
但是该方法现在在该行抛出一个空指针异常。事实上,对该字符串的任何类型的更改,例如.trim()
都会执行相同的操作,抛出一个null
我现在完全被难住了你可以像这样从价值中避开引号
value = value.replaceAll("'","''");
这是getData()方法的错误。它返回空值数据您需要处理
entry.getValue()
返回null
的情况<代码>“+null生成一个字符串,该字符串字面上包含“null”
,但这是语言本身处理的特殊情况。只需尝试此valuesList+=”+(entry.getValue()==null)?“null”:entry.getValue().replace(“,”)+“,”我想知道您是否应该从这个问题后退一步,看看如何进行sql查询。听上去,我认为您是在以字符串形式构建sql请求,而不是使用参数化。不要相信我们的话,你的程序就是这么告诉你的。如果你不相信,那么做一个中间检查<代码>字符串s=entry.getValue();如果(s==null){System.out.println(“不转义”);}
valuesList+="'"+entry.getValue().replace("'","")+"',";
value = value.replaceAll("'","''");