Java SQL中的转义字符(不带预处理语句)
我知道有很多问题专门问这个,但我不确定我的情况。我使用Spring批处理和FieldSetMapper,所以我将这些语句生成为字符串,收集这些字符串并将它们传递给我的ItemWriter。从这个意义上说,我不想使用事先准备好的声明。以下是我得到的:Java SQL中的转义字符(不带预处理语句),java,sql,spring,Java,Sql,Spring,我知道有很多问题专门问这个,但我不确定我的情况。我使用Spring批处理和FieldSetMapper,所以我将这些语句生成为字符串,收集这些字符串并将它们传递给我的ItemWriter。从这个意义上说,我不想使用事先准备好的声明。以下是我得到的: private static String insertStmt = "insert into ..." //this is the beginning of the insert statement. Not gonna type it all
private static String insertStmt = "insert into ..."
//this is the beginning of the insert statement. Not gonna type it all out
private String addStatement() {
String values = String
.format("values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ESCAPE '\'')",
this.primCustNum, this.primCustName, this.mfstRptId,
this.shtlStpNum, this.primCustAddr1,
this.primCustAddr2, this.primCustCity,
this.primCustState, this.primCustPostalCde,
this.primCustPhoneNum);
//log.info("INSERT+VALUES: {}", insertStmt + values);
return insertStmt + values;
}
但这不能处理像这样的案件
插入到。。。其中价值观(‘托尼的地方’,…)代码>
因为tony的
有一个撇号只需创建另一个私有方法,将字符串作为参数并迭代,如果检测到特殊字符,它将在字符之前放置一个反斜杠并返回新字符串(带有这些反斜杠)。然后,在创建sql语句的过程中,不要使用纯文本,而是使用文本作为参数调用此私有方法。看看下面的答案:
在将insertStmt发送到insert之前,需要输入两个引号,如下所示:
- this.primCustNum=this.primCustNum.replace(“,”)李>