如何从用java编写的查询中将虚线字符串传递给oracle
Posted
技术标签:
【中文标题】如何从用java编写的查询中将虚线字符串传递给oracle【英文标题】:How to pass dashed strings to oracle from a query written in java 【发布时间】:2018-06-01 13:17:17 【问题描述】:当我将此查询传递给 oracle dbms 时,我遇到了问题
SELECT * FROM RD_RBF WHERE REQUEST_ID = 'S2N-F01-000000000001'
由于字符串中的破折号,jvm 会返回此异常
java.sql.SQLException: Fail to convert to internal representation
如何正确将此查询传递给 oracle?非常感谢
附:我不熟悉代码,因为我使用的是自动生成组件代码的 Talend 软件,但我可以在上面发布部分代码
String dbquery_tOracleInput_1 = "SELECT * FROM RD_RBF WHERE REQUEST_ID = 'S2N-F01-000000000001'";
java.sql.ResultSet rs_tOracleInput_1 = null;
try
rs_tOracleInput_1 = stmt_tOracleInput_1.executeQuery(dbquery_tOracleInput_1);
java.sql.ResultSetMetaData rsmd_tOracleInput_1 = rs_tOracleInput_1.getMetaData();
int colQtyInRs_tOracleInput_1 = rsmd_tOracleInput_1.getColumnCount();
【问题讨论】:
你能给我们看看你的代码吗? 投票结束因为不清楚,因为虽然您的问题很有趣,但我们无法在没有看到您的 Java 代码的情况下回答它。 我修改了帖子插入部分的代码。我正在使用 Talend 软件,它会自动生成我使用的组件的代码。所以可能我不能发布所有代码,但我在某处读到问题是由字符串中的破折号造成的,因为在 oracle 中破折号是特殊字符。事实上,如果我取消破折号,jvm 不会返回异常。 @Leonardo Oracle RDBMS 不关心字符串文字中的破折号,所以问题出在其他地方。 很可能你的表有一个类型数据类型或者不是“-”导致的。见:>***.com/questions/4268093/… 【参考方案1】:使用 toraclerow 组件。
在组件中查询如下:
“SELECT * FROM RD_RBF WHERE REQUEST_ID = ?” 进入高级设置,选择使用准备好的语句并添加1个参数索引。 同时选择传播查询的记录集。
tOracleRow_1 -----> tParseRecordSet----->
【讨论】:
以上是关于如何从用java编写的查询中将虚线字符串传递给oracle的主要内容,如果未能解决你的问题,请参考以下文章
如何在 mongodb 聚合中将动态字符串传递给 $regex
如何从用 MFC (MSVC 2008) 编写的应用程序查询基于 CGI 的网络服务器并处理结果?
如何在Javascript中将查询字符串传递给Google表格API v4