我正在寻找一种使用Java来转义MySQL查询字符串的方法。
但是WAIT,在你们中的一些人直接跳到“预备陈述”的结论之前,我想再解释一下。
问题是,我没有MySQL连接。我没有直接从Java执行任何MySQL查询。我对准备好的声明不太了解,但AFAIK,准备好的声明需要实时连接才能工作。
我想让我的代码读入一堆CSV / XLS文件,获取数据,然后为MySQL生成一个巨大的INSERT查询。但是此查询现在将存储在文本文件中。它将不会执行,直到有人发出绿灯并将此文本文件转储到数据库中。
如果没有使用过度杀伤框架/库,是否有一种简单的方法可以做到这一点?谢谢你们。
答案 0 :(得分:1)
您可以将指定的Special Character Escape Sequences用于MySQL
output$x <-renderDataTable(data ())
答案 1 :(得分:1)
似乎没有任何现有的lib /框架可以做到这一点。所以我想一个简单的String
操纵器会做什么?
class xxx {
private String escapeStringForMySQL(String s) {
return s.replaceAll("\\", "\\\\")
.replaceAll("\b","\\b")
.replaceAll("\n","\\n")
.replaceAll("\r", "\\r")
.replaceAll("\t", "\\t")
.replaceAll("\\x1A", "\\Z")
.replaceAll("\\x00", "\\0")
.replaceAll("'", "\\'")
.replaceAll("\"", "\\\"");
}
private String escapeWildcardsForMySQL(String s) {
return escapeStringForMySQL(s)
.replaceAll("%", "\\%")
.replaceAll("_","\\_");
}
}
答案 2 :(得分:0)
试试StringEscapeUtils.escapeSql() 这将满足您的期望。
答案 3 :(得分:0)
您可能正在使用为此目的而设计的OWASP's ESAPI。它具有MySQL编解码器。
答案 4 :(得分:0)
我使用了org.apache.commons.lang3.StringEscapeUtils.escapeHtml4(input);
您可以在此处查看文档 String Escape Util (Commons Lang 3.1 API)
公共静态最终字符串scapeHtml4(字符串输入)转义 使用HTML实体的字符串中的字符。
例如:
“面包”和“黄油”
成为:
"bread" & "butter".
支持所有已知的HTML 4.0实体,包括时髦的重音符号。注意 常用的撇号转义字符(')不是 法人实体,因此不受支持。)
参数:input-要转义的字符串,可以为null返回:一个新 转义的字符串,如果输入空字符串,则返回null 3.0