Du sender alle forbindelsesoplysningerne som en enkelt værdi; svarende til dette fra en kommandolinje:
sqlplus "sys as sysdba/[email protected]<connect_string>"
som ville få det samme svar ved at udskrive SQL*Plus logon-hjælpen. Du har også din adgangskode på det forkerte sted, men det kommer ikke så langt. Fra en kommandolinje ville dette fungere:
sqlplus "sys/tiger" "as" "[email protected]<connect_string>"
så du skal sende 5 argumenter til ProcessBuilder
, noget som:
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);
Dette vil stadig kun fungere, hvis dit miljø er konfigureret til at tillade fjernforbindelse som sysdba
. Gør hvad som helst som sys
bør være meget sjælden og have et script, du vil køre som sys
virker usædvanligt nok til, at en Java-indpakning virker som overkill - og får det til at virke, som om du måske forbinder som sys
rutinemæssigt, hvilket ikke er en god idé - men måske er dette bare en læringsøvelse.