使Java字符串可用于SQL脚本

时间:2010-09-23 01:39:27

标签: java sql

如果我有一个如下所示的字符串:

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。

4 个答案:

答案 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)

为什么不使用单引号转义如下

这是一个字符串 单引号全部结束 这个地方以及 返回字符