Newsgroup: it.comp.java
Titolo: Errore SQL

Questo è il metodo che viene chiamato per il salvataggio dei dati contenuti
in un array in un data base di access, per ora non mi curo dell'
eliminazione di dati nell' array ma considero tutti i campi pieni.
Ora da tutte le prove che ho effettuato ho scoperto che l'errore di
SQLException: [Microsoft][ODBC Driver Manager] Stato del cursore non valido
viene dato da int currentID =  ( int ) rs.getLong ( "table_ID" ) per ogni
elemento nell' array e non riesco a capire proprio perchè.
La tabella tblUserRelation salva le corrispondenze tra posizione nel db (
tblJointOwner ) e nell' array in fase di creazione dell'array da DB
Qui sotto vi posto parte del codice che fa riferimento all' SQL.
Nel metodo viene passato un elemento alla volta ed è identificato da person,
pos è la posizione dell' elemento nell array.
                String selectQuery = "SELECT table_ID FROM tblUserRelation
WHERE array_ID=" + pos;
                Statement stmtWhere = createStatement ();
                ResultSet rs = stmtWhere.executeQuery ( selectQuery );
                int currentID =  ( int ) rs.getLong ( "table_ID" );
                rs.close();
                stmtWhere.close();
                String updateQuery = "UPDATE tblJointOwner SET " +
                                     "Name='" + person.getName() + "'," +
                                     "Surname='" + person.getSurname() +
"'," +
                                     "Address='" + person.getAddress() +
"'," +
                                     "AddressNumber='" +
person.getAddressNumber() + "'," +
                                     "Floor='" + person.getFloor() + "'," +
                                     "Stairs='" +  person.getStairs() + "',"
+
                                     "Permission='" + person.getLevel() +
"'," +
                                     "User='" + person.getUser() + "'," +
                                     "Psw='" + person.getPsw() + "'," +
                                     "WHERE IDJointOwner=" + currentID;
                stmt.executeUpdate ( updateQuery );
Grazie per una vostra risposta io è tre gg che ci smacchino...
Ivan


Potrebbe essere un bug (documentato nella bug parade di Sun). Che versione del JDK stai
usando? Se puoi fai una prova con l'ultima versione del JDK 1.3, poi facci sapere.
Ciao,
    Bruno.
P.S.
Un commento su tuo codice: dovresti usare blocchi try / finally per essere sicuro di
chiudere le connessioni; inoltre, vista l'eterogeneita dei dati, ti consiglierei per
l'updare di passare ad un PreparedStatement
|
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://bbruno.fasturl.it
|
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola
|

 l'updare di passare ad un PreparedStatement
Blocchi try finally? ora provo a vedere... Hai qualche esempio per capire
cosa intendi?
Grazie



Il blocco finally viene eseguito sempre, qualunque sia l'eccezione lanciata nel blocco
try, e questo ti garantisce di rimettere sempre le cose a posto :-) Se infatti qualcosa
andasse storto, allora la connessione (o lo statement, o il result set) ti rimarebbero
aperti, e sarebbero chiusi (forse, non con tutti i driver funge :-D) solo quando
intercettati dalla garbage collection. Conviene sempre chiuderli esplicitamente, e un
blocco try/finally te ne da una buona garanzia.
public void doSomething(...) throws SQLException
{
    Connection conn = DriverManager.getConnection(...);
    try
    {
        Statement stmt = conn.createStatement();
        try
        {
            ....
        }
        finally
        {
            stmt.close();
        }
    }
    finally
    {
        conn.close();
    }
}
Ciao,
    Bruno.
---
| Bruno Bossola
| A Java Software Engineer :-)
| 
http://members.xoom.it/bbruno
| 
http://digilander.iol.it/bbossola

                 rs.close();
Magari un bel rs.next() per arrivare alla prima riga (invece di rimanete al BOF)
ti potrebbe aiutare, non credi?
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------


Ah, spettacolo!!! Mica l'avevo visto!
Ciao Stefano, felice di rivederti sul NG! Vedi che c'era bisogno di te?
Suerte,


 ha scritto nel messaggio
news:3c3eda8b...@news.inet.it...


 ha scritto nel messaggio
news:3c3f1b41...@news.inet.it...
