すべての接続情報を単一の値として渡します。コマンドラインからのこれと同等:
sqlplus "sys as sysdba/[email protected]<connect_string>"
これは、SQL*Plusログオンヘルプを印刷するのと同じ応答を取得します。また、パスワードが間違った場所にありますが、それほど遠くはありません。コマンドラインからこれは機能します:
sqlplus "sys/tiger" "as" "[email protected]<connect_string>"
したがって、5つの引数をProcessBuilder
に渡す必要があります 、次のようなもの:
String sqlCmd = "sqlplus";
String arg1 = "sys/tiger";
String arg2 = "as";
String arg3 = "[email protected](DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname)(Port=PORT ID))(CONNECT_DATA=(SID=SID)))";
String arg4 = fileName;
...
ProcessBuilder pb = new ProcessBuilder(sqlCmd, arg1, arg2, arg3, arg4);
これは、環境がsysdba
としてリモート接続を許可するように構成されている場合にのみ機能します。 。 sys
として何かをする 非常にまれであり、sys
として実行するスクリプトがあるはずです。 Javaラッパーがやり過ぎのように見えるほど珍しいように見えます-そして、sys
として接続する可能性があるように見えます 日常的に、これは良い考えではありませんが、おそらくこれは単なる学習演習です。