在JDBC中为SQL查询插入单引号无效

问题描述 投票:0回答:2

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

比方说,我们有一个带有Restaurant_name列且值为1的表Restaurant: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使用两个单引号作为第一个的转义符)

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

java sql oracle jdbc special-characters
2个回答
0
投票

如果使用Java 9或更高版本,请尝试使用PreparedStatement::enquoteLiteral将字符串括在单引号中。它用两个单引号替换字符串中出现的任何单引号。

如果您使用的是Java的较低版本,则可以使用两个单引号来转义单引号。


0
投票

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

.setString(1, "Jack's Deli")将完成它。

© www.soinside.com 2019 - 2024. All rights reserved.