java - 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 中似乎不可能。还有其他方法可以确保将正确的参数值传递给数据库吗?
编辑:哇!我不知道准备好的语句负责格式化,我整个周末都在试图找出我做错了什么。非常感谢大家的建议!
解决方案
推荐阅读
- gradle - 如何将 javascript 依赖项打包到 Kotlin JS 项目 JAR 中?
- java - 如何检索 parseObject 子类的指针 [PARSE SERVER]
- python - 使用正则化时手动计算的验证损失与报告的 val_loss 不同
- java - 创建不兼容的数字子类型
- node.js - Sequelize 在更新时抛出无效值 [Function]
- xamarin - App Center Distribute – Xamarin Forms 的应用内更新
- php - 砌体布局与foreach?
- python - 如何在另一个函数中访问一个python函数中的变量
- reactjs - 窗口变量是否应该被视为 API?
- javascript - 反应 rc-tree 的动画未编译