PDA

View Full Version : [JAVA] Dubbio con JFreeChart e JDBCXYDataSet


Manugal
05-01-2009, 19:23
Ciao a tutti!!

Sto usando questa libreria e vorrei interfacciarla con un DB. Ho provato ad eseguire la seguente query (attraverso il metodo executeQuery() di JDBCXYDataSet):

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:


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");


Vorrei sapere se è possibile creare delle viste con tale metodo. Grazie.

Manugal
05-01-2009, 20:16
Ho provato ora a farla attraverso un'istanza della classe Statement:

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? :confused: :confused:

P.S. : Sto usando Eclipse come IDE

Manugal
05-01-2009, 20:51
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!

Manugal
06-01-2009, 17:26
Vorrei capire anche un'altra cosa.

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


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?

Manugal
06-01-2009, 17:47
E' tutto corretto ho capito il perché. Vedevo quante righe erano prima di fare la query. :doh: