Oracle 12 C JDBC的单引号问题

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

我在查询中使用单引号作为准备好的语句时遇到问题。我想查找Jack's Deli,它是数据库列中的值。

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

这将检索0个结果。但是,当我直接在数据库本身中搜索时,使用:

select * from Restaurant where restauraunt_name like 'Jack''s Deli';

杰克的熟食店归还。我的搜索对于除单引号之外的其他所有字符都可以正常工作,即使我在Oracle中使用第二个单引号将其转义。

我认为查询参数可能会在JDBC连接中的某个地方被更改,并且不会完全按照准备好的状态发送给数据库(仅在涉及单引号的情况下]

我研究打印参数值以确保DB接收到正确的值,但是在Oracle中似乎无法实现。还有其他方法可以确保将正确的参数值传递给数据库吗?

编辑1:我没有在Java中转义该字符,将附加引号放在此处,以便在Oracle DB中转义该字符。即使直接在Oracle DB中输入,也不能使用单引号。需要使用两个单引号将其传递,以便它可以从数据库端运行。

java sql oracle jdbc
1个回答
-1
投票

替换

String result = "Jack''s Deli"

with

String result = "Jack''''s Deli"

说明:使用额外的一对单引号来转义一对单引号。

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