在 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 插入单引号不起作用的主要内容,如果未能解决你的问题,请参考以下文章