Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    da campo CLOB a file XLS

    Ciao ragazzi,
    vorrei avere un aiuto su come poter estrapolare dei dati presenti in un campo di tipo CLOB.
    Precisamente io inserisco in questo campo un file XLS in questo modo
    codice:
    File data = new File("file.xls");
    reader = new FileReader(data);
    
    "UPDATE TB_REPORT SET " +
    	"FIELD_CLOB_ELENCO = ?, " +
    	"FIELD_DATA_AGGIORN = SYSDATE, " +
    	"WHERE FIELD_ID_PK = ?";
    String query = UPDATE_REPORT;
    
    prepStat = istCon.prepareStatement(query);	
    prepStat.setCharacterStream(1, reader, (int) data.length());
    prepStat.setLong(2, id);
    prepStat.executeUpdate();
    Per l'estrazione uso il metodo
    codice:
    getCharacterStream()
    che mi restituisce un oggetto di tipo Reader.
    Fatto ciò come dovrei elaborare questo oggetto al fine di avere un array di char da inviare ad una jsp che non farà altro che contenere un content-type pari a application/vnd.ms-excel?

    Grazie in anticipo
    Testata Giornalistica Online - InfoOggi.it
    IRC Resource - IRC-Zone.org

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Re: da campo CLOB a file XLS

    Originariamente inviato da Kaesar83

    che mi restituisce un oggetto di tipo Reader.
    Fatto ciò come dovrei elaborare questo oggetto al fine di avere un array di char da inviare ad una jsp che non farà altro che contenere un content-type pari a application/vnd.ms-excel?

    Grazie in anticipo
    Non si tratta di "elaborare l'oggetto", ma di usarlo per leggere i dati, salvarli in una struttura dati apposita (perchè un array di char?) e passare tale struttura a chi vuoi.

    codice:
    Reader reader = tuoRS.getCharacterStream( ... );
    
    ArrayList<Character> caratteri = new ArrayList<Character>();
    int byteLetto = 0;
    while((byteLetto = reader.read()) != -1) {
       caratteri.add( new Character((char) byteLetto) );
    }
    
    char[] tuoArrayOfChar = new char[ caratteri.size() ];
    for(int i=0; i<tuoArrayOfChar.length; ièè) tuoArrayOfChar[i] = caratteri.get(i);
    
    // Ora usa il tuo array di caratteri (tuoArrayOfChar)
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Grazie LeLeFT,
    uso un array di char perchè mi è stato consigliato...tu hai qualcosa da consigliarmi a riguardo?
    Testata Giornalistica Online - InfoOggi.it
    IRC Resource - IRC-Zone.org

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Kaesar83
    Grazie LeLeFT,
    uso un array di char perchè mi è stato consigliato...tu hai qualcosa da consigliarmi a riguardo?
    Questo dipende da ciò che dovrai farne di questi dati... io non userei un array di char, quanto piuttosto un array di byte (i char sono soggetti al charset encoding e questo potrebbe "rovinarti" la trasmissione del file excel originario)... ma per inviare un file al client non vedo perchè passare da una JSP... lo farei direttamente dalla Servlet (se ho capito quello che vuoi fare: ovvero permettere il download di un file).

    Perchè scomodare una JSP (che dovrebbe servire a renderizzare i dati in formato HTML, quindi occuparsi della fase di presentation) per svolgere un compito di pura business logic (di cui si occupano, appunto, le servlet)?

    Ma, probabilmente, non ho tutte le informazioni necessarie a capire ciò che devi effettivamente fare.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Giusto per completare il thread faccio presente la mia soluzione a chi magari dovesse avere la mia stessa necessità.
    Per estrapolare il CLOB utilizzo il metodo getClob dell'oggetto PreparedStatement, dopo di che trasformo l'oggetto risultante di tipo Clob in un array di byte ed infine invio lo stream alla pagina.
    Ecco fatto!
    Testata Giornalistica Online - InfoOggi.it
    IRC Resource - IRC-Zone.org

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.