如何从用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

如何在 Python 2 中将字符串传递给 subprocess.Popen? [复制]

如何在php中将div值传递给mysql查询[关闭]

如何在 node.js 环境中将查询语句传递给 bigquery