Anda meneruskan semua informasi koneksi sebagai nilai tunggal; setara dengan ini dari baris perintah:
sqlplus "sys as sysdba/example@sqldat.com<connect_string>"
yang akan mendapatkan respons yang sama dengan mencetak bantuan masuk SQL*Plus. Anda juga memiliki kata sandi di tempat yang salah tetapi tidak sampai sejauh itu. Dari baris perintah ini akan berfungsi:
sqlplus "sys/tiger" "as" "example@sqldat.com<connect_string>"
jadi Anda harus meneruskan 5 argumen ke ProcessBuilder , sesuatu seperti:
String sqlCmd = "sqlplus";
String arg1 = "sys/tiger";
String arg2 = "as";
String arg3 = "example@sqldat.com(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);
Ini hanya akan berfungsi jika lingkungan Anda dikonfigurasi untuk mengizinkan koneksi jarak jauh sebagai sysdba . Melakukan apa saja sebagai sys seharusnya sangat jarang, dan memiliki skrip yang ingin Anda jalankan sebagai sys tampaknya cukup tidak biasa untuk pembungkus Java tampak seperti berlebihan - dan membuatnya tampak seperti Anda mungkin terhubung sebagai sys secara rutin, itu bukan ide yang bagus - tapi mungkin ini hanya latihan pembelajaran.