Edde
18-09-2006, 21:46
Ciao :)
Ho questo pezzo di codice:
------------------------------------------------
public static Vector findDB(String lemma, Connection conn)
{
try{
if(conn!=null)
{
Statement st = conn.createStatement();
String query= ("select * from Ontologie where lemma='"+lemma+"'");
ResultSet rs = st.executeQuery(query);
ResultSet rsIpo;
ResultSet rsIper;
String significato, sinonimi;
Vector ipernomi = new Vector();
Vector iponomi = new Vector();
Vector vect = new Vector();
//Le righe hanno 3 campi
while(rs.next())
{
significato = rs.getString(2);
sinonimi = rs.getString(3);
rsIpo = st.executeQuery("select * from Iponomi where significato='"+significato+"'");
while(rsIpo.next())
iponomi.addElement(rsIpo.getString(3));
rsIper = st.executeQuery("select * from Ipernomi where significato='"+significato+"'");
while(rsIper.next())
ipernomi.addElement(rsIper.getString(3));
vect.addElement(new Word(lemma, significato, sinonimi, ipernomi, iponomi));
}
st.close();
return vect;
}
else return null;
}catch(Exception e) {e.printStackTrace(); return null;}
}//Fine findDB
------------------------------------------
Prima iponomi e ipernomi erano una semplice stringa, e non avevo quindi bisogno dei due pezzi:
rsIpo = st.executeQuery("select * from Iponomi where significato='"+significato+"'");
while(rsIpo.next())
iponomi.addElement(rsIpo.getString(3));
e
rsIper = st.executeQuery("select * from Ipernomi where significato='"+significato+"'");
while(rsIper.next())
ipernomi.addElement(rsIper.getString(3));
E funzionava tutto a meraviglia.
Ora mi sono però reso conto che con quelle due chiamate è come se "azzerassero" il ResultSet iniziale (rs).
Ad esempio, per Lemma="dog" rs dovrebbe avere 7 righe.
E se elimino quei due passaggi è ciò che succede(nel vettore "vect" che mi viene restituito, ho in effetti 7 oggetti). Lasciandoli invece, mi restituisce un "vect" con un oggetto solo... E' come se leggesse la prima riga di rs, e poi, dopo le successive chiamate sullo statement st, azzerasse il result set, uscendo quindi immediatamente alla successiva iterazione del ciclo più esterno.
Come posso procedere?
Spero di essere stato comprensibile :doh:
Ho questo pezzo di codice:
------------------------------------------------
public static Vector findDB(String lemma, Connection conn)
{
try{
if(conn!=null)
{
Statement st = conn.createStatement();
String query= ("select * from Ontologie where lemma='"+lemma+"'");
ResultSet rs = st.executeQuery(query);
ResultSet rsIpo;
ResultSet rsIper;
String significato, sinonimi;
Vector ipernomi = new Vector();
Vector iponomi = new Vector();
Vector vect = new Vector();
//Le righe hanno 3 campi
while(rs.next())
{
significato = rs.getString(2);
sinonimi = rs.getString(3);
rsIpo = st.executeQuery("select * from Iponomi where significato='"+significato+"'");
while(rsIpo.next())
iponomi.addElement(rsIpo.getString(3));
rsIper = st.executeQuery("select * from Ipernomi where significato='"+significato+"'");
while(rsIper.next())
ipernomi.addElement(rsIper.getString(3));
vect.addElement(new Word(lemma, significato, sinonimi, ipernomi, iponomi));
}
st.close();
return vect;
}
else return null;
}catch(Exception e) {e.printStackTrace(); return null;}
}//Fine findDB
------------------------------------------
Prima iponomi e ipernomi erano una semplice stringa, e non avevo quindi bisogno dei due pezzi:
rsIpo = st.executeQuery("select * from Iponomi where significato='"+significato+"'");
while(rsIpo.next())
iponomi.addElement(rsIpo.getString(3));
e
rsIper = st.executeQuery("select * from Ipernomi where significato='"+significato+"'");
while(rsIper.next())
ipernomi.addElement(rsIper.getString(3));
E funzionava tutto a meraviglia.
Ora mi sono però reso conto che con quelle due chiamate è come se "azzerassero" il ResultSet iniziale (rs).
Ad esempio, per Lemma="dog" rs dovrebbe avere 7 righe.
E se elimino quei due passaggi è ciò che succede(nel vettore "vect" che mi viene restituito, ho in effetti 7 oggetti). Lasciandoli invece, mi restituisce un "vect" con un oggetto solo... E' come se leggesse la prima riga di rs, e poi, dopo le successive chiamate sullo statement st, azzerasse il result set, uscendo quindi immediatamente alla successiva iterazione del ciclo più esterno.
Come posso procedere?
Spero di essere stato comprensibile :doh: