【问题标题】:Parentheses in java .properties files?java .properties 文件中的括号?
【发布时间】:2013-05-31 19:09:53
【问题描述】:

我正在尝试通过 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 脚本参数传入的内容:

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

ddaquery2=select count(distinct(smci)) from issuer

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

ddaquery1:选择 ddaquery2:计数,

空格分隔字符串并使空格后的每个单词成为单独的 arg[]。有谁知道我该如何解决这个问题?

谢谢

【问题讨论】:

  • 我可以建议您编辑您的问题,以便您提及您使用的 jenkins 插件吗?正如我在一篇文章中提到的,这可能是由于这个插件自动引用了包含 shell 元字符的“单词”。
  • @fge 我正在考虑删除我的答案,因为它不能解决 OPs 问题,但我担心丢失可能对某人提供正确解决方案有用的 cmets。
  • @Smit 不要... 您可以对其进行编辑,以便参考正在进行的扩展讨论。不幸的是,我没有测试环境。

标签: java bash jenkins


【解决方案1】:

您的问题对我来说似乎很好。考虑到不是拼写错误,它失败的原因是因为, 你在COUNT(1) 抛出SQLSyntaxErrorException 之后。

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

【讨论】:

  • 逗号不是问题,这是相同的构建减去逗号: SELECT 'COUNT(1)'marketsectordescription FROM PRODUCT GROUP BYmarketsectordescription ORDER BYmarketsectordescription
  • 我有另一个查询失败,它也没有逗号,但有括号:select 'count(distinct(smci))' from issuer
  • 那会是 bash 问题吗?也许 bash 脚本将每个以空格分隔的段视为一个单独的 arg(这是 bash 所做的),并在需要时引用它们。然后其他东西使用空格连接 args,但第一个 arg 在此期间被无意引用。
  • 好吧,另一个猜测:这个插件会自动引用所有具有可能被 shell 解释的元字符的字符串。例如,* 是否也会发生同样的事情?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    相关资源
    最近更新 更多