Java 当要插入的字符串位于用户生成的变量中时,如何转义SQL insert的单引号
我正在构建一个insert命令以使用jdbc执行。它的一部分是连接用户生成的字符串…在用户使用如下字符串之前,这一切都有效: 阿伯卡德Java 当要插入的字符串位于用户生成的变量中时,如何转义SQL insert的单引号,java,sql,jdbc,Java,Sql,Jdbc,我正在构建一个insert命令以使用jdbc执行。它的一部分是连接用户生成的字符串…在用户使用如下字符串之前,这一切都有效: 阿伯卡德 您可以执行以下任一操作: 使用PreparedStatement类。(推荐) 转义单引号 在SQL中,单引号将使用双单引号进行转义'-->' 你可以从图书馆使用。 使用此方法,您可以从html、xml、sql等中转义字符。请根据需要查找方法escapeXXX。供参考: 注意:escapeSql已在ApacheCommonsLang3中删除(请参阅哪些参考)
您可以执行以下任一操作:
escapeXXX
。供参考:
注意:escapeSql
已在ApacheCommonsLang3中删除(请参阅哪些参考)
例如:
输入:
<sometext>
Here is some "Text" that I'd like to be "escaped" for HTML
& here is some Swedish: Tack. Vars?god.
</sometext>
还有一个选择:
使用专门为此目的设计的本机Android方法:
DatabaseUtils.sqlEscapeString(String)
以下是it在线文档:
您需要使用参数。在StringEscapeUtils Documentation for escapeSQL中:“目前,此方法仅将单引号转换为双引号”StringEscapeUtils.escapeSQL是。此方法仅适用于以后将输入用作HTML输出的情况。关于弃用,commons lang的v3.6仍然存在,并且可以很好地与org.apache.commons.text配合使用。。
String userString="a'bcd";
String changedUserString = userString.replace("'","''");
//changedUserString = a''bcd
String insertTableSQL = "INSERT INTO myTable (insertColumn) VALUES("
+" '"+changedUserString +"' )";
String str = FileUtils.readFileToString(new File("input.txt"));
String results = StringEscapeUtils.escapeHtml(str);
System.out.println(results);
<sometext>
Here is some "Text" that I'd like to be "escaped" for HTML
& here is some Swedish: Tack. Vars?god.
</sometext>
<sometext>
Here is some "Text" that I'd like to be "escaped" for HTML
& here is some Swedish: Tack. Varsågod.
</sometext>
DatabaseUtils.sqlEscapeString(String)
String userString="a'bcd";
String insertTableSQL = "INSERT INTO myTable "
+ "(insertColumn) "
+ "VALUES("
+"'"+DatabaseUtils.sqlEscapeString(userString)+"'"
+")";
statement.executeUpdate(insertTableSQL);