在 JDBC 中为 SQL Query 插入单引号不起作用

Posted

技术标签:

【中文标题】在 JDBC 中为 SQL Query 插入单引号不起作用【英文标题】:Inserting single quote in JDBC for SQL Query not working 【发布时间】:2020-03-22 22:59:07 【问题描述】:

在通过 Oracle JDBC 在 JAVA 中的准备好的语句中使用单引号时,我遇到了处理单引号的问题。

假设我们有一个表 Restaurant,其列 restaurant_name 的值为 1:Jack's Deli

我想使用这样一个简单的预处理语句查询:

    String result = "Jack\'\'s Deli"
    String sqlStatement = "select * from Restaurant where restauraunt_name like ? escape '\\' ";
    PreparedStatement pStmt = conn.prepareStatement(sqlStatement);
    pstmt.setString(1, result);

结果显示 0 返回值,但是当我直接在数据库 (ORACLE) 中搜索查询时,它可以正常工作并检索结果。 (Oracle 使用两个单引号作为第一个的转义)

我认为该值未正确传递给数据库。或者还有其他格式问题。

【问题讨论】:

为什么你认为你需要转义result 值中的'?您将其设置为准备好的语句上的参数值,因此不需要引用。 【参考方案1】:

准备好的语句的重点是您不需要任何转义。

.setString(1, "Jack's Deli") 会搞定的。

【讨论】:

以上是关于在 JDBC 中为 SQL Query 插入单引号不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中为 tsql 字符串转义单引号(ms sql)

sql语句插入的数据中含有单引号怎么办?

如何用sql语句插入一个带有单引号的值

pd.read_sql_query 单/双引号格式化

客户数据中存在单引号,如何插入SQL SERVER

如何插入包含单引号的字符串