Già questo ne fa uno strumento fondamentale, visto che esistono database che non offrono tool per l'invio di script SQL da shell.
Ma la vera forza è la possibilità di utilizzarlo dall'interno dei propri programmi.
Immaginate un applicativo che la prima volta che viene lanciato crea il suo database senza bisogno di intervento, o la possibilità di applicare patch al db dopo l'installazione di una nuova versione.
L'utilizzo è veramente semplice. Di seguito riporto un esempio:
String url = "jdbc:hsqldb:file:/java/provehsql/provedb;shutdown=true";
String user = "sa";
String pwd = "";
String sql = IOUtils.toString(Prova.class.getResourceAsStream("script.sql"));
SqlTool.objectMain(new String[] {
"--inlineRc",
"URL=" + url + ",USER=" + user + ",PASSWORD=" + pwd,
"--sql",
sql
});
Come si può notare ho caricato il contenuto di uno script file in una string (utilizzando Apache IOUtils) per poi passarlo al metodo objectMain() di SqlTool insieme all'url e alle credenziali per la connessione al DB.
Il metodo accetta un array di stringhe analogo a quanto farebbe il metodo main per i parametri della riga di comando.
L'unico reale impedimento che ho riscontrato è che non è possibile passare una password non vuota. Se l'utente del database ha una password impostata il metodo si ferma per leggerla dallo standard input, cosa che vanifica ogni tentativo di automatizzazione.