如果我有一个如下所示的字符串:
This is a string
with single quotes ' all over
the ' place as well as
return characters
如何将其转换为可在INSERT语句中使用的字符串?
INSERT INTO MyTable VALUES ('<the above string>');
上面的字符串存在以下问题:返回字符以及单引号会破坏上面INSERT语句的有效性。
编辑:抱歉,我可能应该更清楚了。我正在使用INSERT语句生成SQL脚本,而不是在Java应用程序中执行SQL。
答案 0 :(得分:2)
使用PreparedStatement:
String sql = "INSERT INTO MyTable VALUES (?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, theAboveString);
ps.executeUpdate();
答案 1 :(得分:2)
我正在使用INSERT语句生成SQL脚本,而不是在Java应用程序中执行SQL。
在这种情况下,您必须生成String的“转义”版本。为此,我建议使用OWASP项目中的ESAPI库(如果可能)。有关详细信息,请参阅Defense Option 3: Escaping All User Supplied Input。
答案 2 :(得分:0)
要在SQL字符串中放入单引号,请使用它两次。
所以
insert into mytable
values ('isn''t it lovely?')
因此,在生成sql脚本时,只需用双引号替换所有单引号,然后再将单引号添加到其上。
答案 3 :(得分:0)
为什么不使用单引号转义如下
这是一个字符串 单引号全部结束 这个地方以及 返回字符