Newsgroup: it.comp.java
Titolo: HELP: ResulSet e stampa su file...

Ciao a tutti,
ho venerdì l'esame di Sistemi Informativi e dovrei per allora riuscire a 
creare il seguente metodo, che durante il compito mi sarebbe di una utilità 
assoluta (mi permetterebbe di risparmiare un sacco di tempo e togliermi 
molti pensieri)...
Quindi sarei grata a tutti quelli che potessero darmi suggerimenti o, nel 
caso abbiamo già adottato una soluzione simile, anche passarmi il metodo 
intero....
Devo provare a costruire un metodo con la seguente signature: public void 
PrintFile(ResultSet rs,String filename),
utilizzando l'interfaccia ResultSetMetaData, che viene restituita dal metodo 
<ResultSetObj>.getMetaData()
Il metodo dovrà prendere in ingresso un ResultSet ed il nome del file di 
output e scrivere su quest'ultimo il contenuto di tale ResultSet formattato
in maniera opportuna, senza conoscere a priori la struttura della tabella 
(numero di colonne, nomi, tipi di dato ecc.).
Se il nome del file ha valore 'null' la stampa avverrà direttamente a video.
I problemi più grossi li ho sul non sapere a priori il numero di colonne... 
e non so come formattare il mio output...
Spero proprio che qualcuno mi possa dare una mano,
mi potreste davvero salvare la vita!!!
Grazie a tutti,
CAMI. 

 
Figurati!!!
LD

Ciao,
grazie mille mi sei stato utilissimo...
se può essere utile a qualcun altro allego il metodo corretto e funzionante 
(anche se credo che si possa fare meglio, ma le mie capacità non sono 
granchè...)
Ho eliminato il discorso per cui se non viene passato il nome del file il 
risultato viene stampato a video, perchè non sono riuscita a definirlo 
(altri suggerimenti sono ben accetti!!!),
cmq il metodo adesso oltre a stampare il ResultSet completo 
indipendentemente dai tipi di dato, stampa anche i nomi delle colonne...
Ovviamente chiunque sappia fare di meglio... tutti i suggerimenti sono 
davvero graditissimi.
private static void PrintFile(ResultSet rs, String nomeFile) {
    try{
        PrintWriter pw = new PrintWriter(new FileWriter(nomeFile));
        ResultSetMetaData rsmd = rs.getMetaData();
        int columnCount = rsmd.getColumnCount();
        String intestazione = "";
        String campo = "";
        String riga;
       for(int i=1;i<=columnCount;i++) {
           intestazione = rsmd.getColumnName(i);
           pw.print(intestazione + "\t\t\t");
       }
       pw.println();
       pw.println("-------------------------------------------------------");
      while (rs.next()) {
          riga = "";
          for(int i=1;i<=columnCount;i++) {
              campo = rs.getObject(i).toString();
              riga += campo + "\t\t\t";
          }
          pw.println(riga);
          pw.flush();
      }
      rs.close();
      pw.close();
     }
     catch(Exception exception) {
         exception.printStackTrace();
     }
}
Ciao ciao
CAMI.
"Lord Dragon" <lordd...@NOSPAMemail.it> ha scritto nel messaggio 
news:jkB6e.59548$zZ1.1...@twister1.libero.it...


...

Per mandare l'output a video invece che su file basta che tu
sostituisca l'istruzione
PrintWriter pw = new PrintWriter(new FileWriter(nomeFile));
con
PrintWriter pw = null;
if (nomeFile == null)
  pw = new PrintWriter(System.out);
else
 pw = new PrintWriter(new FileWriter(nomeFile));
e tutto funziona.
Il tuo metodo genera una NullPointerException quando il contenuto di
una colonna è null... Ti conviene dargli un'occhiata.
Inoltre spesso il contenuto di una colonna non è allineato sotto il
titolo. Dovresti curare neglio l'allineamento.
Scusa ma non ho il tempo di scrivere e postare la soluzione
Bye

 ha scritto nel messaggio 
news:7ef63f28.05041...@posting.google.com...
