首页 > 解决方案 > Oracle 12 C JDBC 的单引号问题

问题描述

我在查询中将单引号用作准备好的语句时遇到问题。我想查找 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 连接中的某处被更改,并且没有完全按照准备好的方式发送到数据库(仅当涉及单引号时)

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

编辑:哇!我不知道准备好的语句负责格式化,我整个周末都在试图找出我做错了什么。非常感谢大家的建议!

标签: javasqloraclejdbc

解决方案


推荐阅读