使Java字符串可用于SQL脚本

使Java字符串可用于SQL脚本,java,sql,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>'); 插入MyTable值(“”); 上面的字符串存在返回字符和单引号的问题,这会破坏上面INSERT语句的有效性 编辑:对不

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

This is a string
with single quotes ' all over
the ' place as well as
return characters
如何将其转换为可以在INSERT语句中使用的字符串

INSERT INTO MyTable VALUES ('<the above string>');
插入MyTable值(“”);
上面的字符串存在返回字符和单引号的问题,这会破坏上面INSERT语句的有效性

编辑:对不起,我可能应该说得更清楚些。我正在使用INSERT语句生成SQL脚本,而不是在Java应用程序中执行SQL。

使用PreparedStatement:

String sql = "INSERT INTO MyTable VALUES (?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, theAboveString);
ps.executeUpdate();
使用准备好的报表:

String sql = "INSERT INTO MyTable VALUES (?)";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, theAboveString);
ps.executeUpdate();
我使用INSERT语句生成SQL脚本,而不是在Java应用程序中执行SQL

在这种情况下,您必须生成字符串的“转义”版本。为此,我建议使用OWASP项目中的库(如果可能的话)。有关更多详细信息,请参阅

我使用INSERT语句生成SQL脚本,而不是在Java应用程序中执行SQL


在这种情况下,您必须生成字符串的“转义”版本。为此,我建议使用OWASP项目中的库(如果可能的话)。有关详细信息,请参阅。

要在SQL字符串中插入一个引号,请使用它两次

所以


因此,在生成sql脚本时,只需将所有单引号替换为双引号,然后再将开头和结尾的单引号添加到脚本中。

要将单引号放在sql字符串中,请使用它两次

所以


因此,在生成sql脚本时,只需将所有单引号替换为双引号,然后再将开头和结尾的单引号固定到脚本上。

为什么不使用下面的单引号转义呢

这是一根绳子 满是单引号\' “地方”以及
返回字符

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

这是一根绳子 满是单引号\' “地方”以及
返回字符

但是我没有执行SQL。我打算生成一个SQL脚本,该脚本中有INSERT语句供其他人执行。但是,我不执行SQL。我打算生成一个SQL脚本,其中包含INSERT语句供其他人执行。