Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160

    [JAVA] Creazione viste SQL

    Ciao a tutti!!

    Sto usando la libreria JFreeChart e in particolare ho bisogno di usare la classe JDBCXYDataSet per interfacciarmi con un database. Ho provato ad eseguire la seguente query (attraverso il metodo executeQuery() di JDBCXYDataSet):

    codice:
    s.executeQuery("create view [V_NumLibriPU] as 
    select id, count(titolo) as NumLibri from libri,utenti 
    where id=idu and titolo not like \"%SCHEDA%\" 
    group by id");
    
    s.executeQuery("select count(id) as NumUtenti, NumLibri 
    from V_NumLibriPU 
    group by id 
    order by NumLibri DESC");
    Ma questo mi lancia la seguente eccezione: java.sql.SQLException: query does not return ResultSet

    (Se provo a lanciarla una seconda volta mi dice che la tabella V_NumLibriPU già esiste, anche se chiudo il programma e lo riapro).

    Dopodiché ho provato ad eseguire questa query al posto della precedente:

    codice:
    s.executeQuery("create view [V_NumLibriPU] as " +
     "select id, count(titolo) as NumLibri " + 
     "from libri,utenti " + 
     "where id=idu and titolo not like \"%SCHEDA%\" " +
     "group by id " + 
     "select count(id) as NumUtenti, NumLibri " +
     "from V_NumLibriPU " +
     "group by id " +
     "order by NumLibri DESC");
    Ultima prova che ho fatto è usare direttamente un'istanza della classe Statement:

    codice:
    stat.executeUpdate("create view V_NumLibriPerUtente as " +
    "select id, count(titolo) as NumLibri " +
    "from libri,utenti " +
    "where id=idu and titolo not like \"%SCHEDA%\" " +
    "group by id");
    In questo caso funziona, però dalla seconda volta in poi che lancio questa istruzione, come nel caso precedente, anche se chiudo il programma e lo riapro mi lancia l'eccezione: java.sql.SQLException: table V_NumLibriPerUtente already exists

    Ma come è possibile che è già esistente??? Chi può darmi una mano?

    Grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    Scrivendo stat.executeUpdate("drop view [V_NumLibriPerUtente]"); prima della query funziona e non lancia l'eccezione, ma non capisco perché debba cancellare una view che non esiste! Inoltre vorrei capire se c'è un modo per fare tutto questo con JDBCXYDataSet.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    Vorrei capire anche un'altra cosa.

    Se io lancio la seguente query con SQLite mi restituisce 1508 righe:

    codice:
    select count(id) as NumUtenti, NumLibri
    from V_NumLibriPerUtente
    group by NumLibri
    order by NumLibri DESC
    Se la lancio tramite executeQuery() e poi scorro i risultati con il metodo next() di ResultSet mi restituisce solo 633 elementi e non 1508. Sbaglio in qualche cosa?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    E' tutto corretto. Ho capito il perché.

  5. #5
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Originariamente inviato da Manugal
    E' tutto corretto. Ho capito il perché.
    Se ti va posta la soluzione, in modo che anche altre persone in un futuro possano godere della tua risoluzione ( anche se non ti siamo stati molto di aiuto... )
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    Non c'è una soluzione

    Ero io che calcolavo male il numero di righe, perché ovviamente facendo una query con group by il risultato si restringe.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.