【问题标题】:How to escaping single quote in prepared statement.? [duplicate]如何在准备好的语句中转义单引号。? [复制]
【发布时间】:2021-12-23 06:04:21
【问题描述】:
  select group_id,group_name,directory_id from csr_dim_group where group_name IN ('RG-Actuary SecShared Best's Week') and directory_id=?

    PreparedStatement statement = getStatement(sql);
    statement.setLong(1, dirId);
    rs = statement.executeQuery(); 

获取SQLServerException。你能帮我如何在preparedStatement中转义单引号吗?

2021-11-10 21:32:02,892 错误 [com.mcafee.mesa.reportdbin.util.UpdateDirectoryDbUtil] SQL 异常 在获取目录组期间: com.microsoft.sqlserver.jdbc.SQLServerException:索引 1 超出 范围。 在 com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:234) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setterGetParam(SQLServerPreparedStatement.java:1115) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setValue(SQLServerPreparedStatement.java:1129) 在 com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.setLong(SQLServerPreparedStatement.java:1429) 在 org.apache.commons.dbcp.DelegatingPreparedStatement.setLong(DelegatingPreparedStatement.java:123) 在 org.apache.commons.dbcp.DelegatingPreparedStatement.setLong(DelegatingPreparedStatement.java:123) 在 com.mcafee.mesa.reportdbin.util.UpdateDirectoryDbUtil.getDirectoryGroups(UpdateDirectoryDbUtil.java:197) 在 com.mcafee.mesa.server.project.services.directory.UpdateDirectoryHelper.updateDirectoryGroup(UpdateDirectoryHelper.java:584)

【问题讨论】:

  • edit 你的问题表明你是如何在sqldirId 中输入值的。
  • 这与你使用PreparedStatement无关。当 SQL 字符串文字中有单引号时,无论您如何执行语句,都必须对其进行转义。

标签: java sql jdbc


【解决方案1】:

您可以在字符串中使用\' 来转义'\ 用于转义保留字符。您也可以使用\" 来转义引号。

【讨论】:

  • 哦,我明白了。我不知道那个大声笑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2016-11-06
  • 2015-09-13
  • 2016-04-18
相关资源
最近更新 更多