U geeft alle verbindingsinformatie door als een enkele waarde; equivalent aan dit vanaf een opdrachtregel:
sqlplus "sys as sysdba/[email protected]<connect_string>"
die hetzelfde antwoord zou krijgen als het afdrukken van de SQL*Plus-aanmeldingshulp. Je hebt ook je wachtwoord op de verkeerde plek staan, maar zo ver komt het niet. Vanaf een opdrachtregel zou dit werken:
sqlplus "sys/tiger" "as" "[email protected]<connect_string>"
dus je moet 5 argumenten doorgeven aan ProcessBuilder
, zoiets als:
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);
Dit werkt nog steeds alleen als uw omgeving is geconfigureerd om externe verbinding toe te staan als sysdba
. Iets doen als sys
zou zeer zeldzaam moeten zijn, en met een script dat u wilt uitvoeren als sys
lijkt ongebruikelijk genoeg voor een Java-wrapper om overdreven te lijken - en het lijkt alsof u verbinding maakt als sys
routinematig, wat geen goed idee is, maar misschien is dit slechts een leeroefening.