我正在开发一个项目,并且创建了一个方法 insertStatement()
,它创建一个字符串缓冲区来构造我的 SQL 插入语句。这是:
private String insertStatement() {
StringBuffer sb = new StringBuffer(
"insert into CUSTOMER (NAME, NUMBER, CITY, STATE) values (");
sb.append("'" + this.custName + "',");
sb.append("'" + this.custNum + "',");
sb.append("'" + this.custCity + "',");
sb.append("'" + this.custState + ")");
return sb.toString();
}
我想知道是否有一种更有效的方法来构建此语句,而不必在每行开头附加 '
并在末尾附加 ',
结束。
问题的更多细节。我正在创建一个批处理作业,此方法将语句作为字符串返回,然后填充一个数组列表,该列表将传递给 ItemWriter,然后 ItemWriter 将数据存储到数据库中。
最佳答案
永远不要使用StringBuffer
。它已被 StringBuilder
取代。使用PreparedStatement;它是类型安全的并且可以防止 SQL 注入(inject)攻击。
如果您确实使用 StringBuilder
来构建字符串,请不要在 append
序列中进行内联字符串连接;只需使用append
即可。
至于前置(不是“附加”)引号和附加引号逗号,这是构建不安全 SQL 字符串的产物,在该上下文中是不可避免的。 PreparedStatement
将为您处理该问题。
关于java - 使用 StringBuffer 构建更高效的 SQL 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38599566/