如何通过命令 Line/Batch Args[] 将所有类型的 SQL-查询传递到 Java?

How to pass all kind of SQL-Queries via Command Line/Batch Args[] into Java?

我想写一个小的 .jar,用作 SQL 的“翻译器”- 定向到 z/OS-DB2-Database 的查询。 我的目标是应用程序接受 SQL-查询作为命令行参数,手动或通过 shell script/cron,在 IP、端口、用户等其他参数旁边

有没有办法在将这些参数传递给 jar 时不受影响?

示例:

java -jar db2sql.jar SQL=={SELECT * FROM TABLE1 TAB1, TABLE2 TAB2 WHERE TAB1.XYZ = TAB2.ZYX AND TAB2.ABC LIKE 'blabla' AND TAB1.DATE >= '01.01.2015'} IP=={192.168.0.1} User=={Santa} Password=={CLAUS}

(请忽略这句话毫无意义,但我希望你能领会)

我的问题是读出命令行参数,主要是特殊字符,如 * 、" ' 等

问题:

亲切的问候

尽管出于多种原因我不推荐您尝试执行的操作,但至少在 *NIX 环境中您可以使用标准方式。

java -jar foo.jar -s "SELECT * FROM SOMETHING WHERE foo = 2" -u username -h hostname

您可以使用额外的库来解析参数,但这样您将使用 -s 来指定 SQL 查询,并将参数值包装在 " 中以使其成为具有自动转义的单个参数。

在您的主要方法中,您可以使用(简化)

获得完整的查询
if(args[0].equals("-s"))
    sqlString = args[1];