java .properties文件中的括号?

时间:2013-05-31 19:09:54

标签: java bash jenkins

我试图通过bash shell脚本将sql查询传递到java类中,该脚本从外部EnvFile.properties获取查询。属性文件中的查询如下所示:

DDAQUERY1=SELECT COUNT(1), marketsectordescription FROM PRODUCT GROUP BY marketsectordescription ORDER BY marketsectordescription

查询失败并显示以下错误:

java.sql.SQLSyntaxErrorException: ORA-00936: missing expression

传递给脚本的值如下所示(如Jenkins的控制台输出窗口中所示):

SELECT 'COUNT(1),' marketsectordescription FROM PRODUCT GROUP BY marketsectordescription ORDER BY marketsectordescription

由于单引号(')出现在带括号的语句附近,所以括号似乎肯定会产生某种问题。事实上这是怎么回事?可以采取哪些措施来解决这个问题?

使用以下Jenkins插件将env变量注入到构建中: https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin

编辑:

看起来它不是括号,而是空格。这是我从prop文件传递的内容> bash script args:

ddaquery1 = SELECT COUNT,marketsectordescription FROM PRODUCT GROUP BY marketsectordescription ORDER BY marketsectordescription

ddaquery2 =从发行人

中选择计数(distinct(smci))

以下是进入java应用程序的内容:

ddaquery1:SELECT ddaquery2:COUNT,

这些空格正在对字符串进行删除,并使每个单词后面的空格成为单独的arg []。有谁知道我怎么解决这个问题?

谢谢

2 个答案:

答案 0 :(得分:2)

您的查询对我来说似乎很好。考虑不是拼写错误,因为,投掷COUNT(1)之后SQLSyntaxErrorException导致其失败的原因。

DDAQUERY1 = SELECT COUNT(1),  marketsectordescription FROM PRODUCT 
                           ^   GROUP BY marketsectordescription 
                               ORDER BY marketsectordescription

答案 1 :(得分:1)

解决方案涉及这样的事实:在bash脚本中传递的参数没有引用,因此将空格后的每个单词作为新参数传递,并将错误的字符串传递给java应用程序中的查询变量。