Newsgroup: it.comp.java
Titolo: Curioso JDBC 2.0

Ho scoperto una cosa che mi ha lasciato alquanto stupito!!!!
Correggetimi se sbaglio:
Se creo un ResultSet con l'istruzione:
...
...
rec=stat.executeQuery('Select a,b,c, from TAB');
sono costretto a consumare i campi nello stesso ordine con cui li ho
dichiarati.
Ossia devo leggere prima a poi b e quindi c.
Se leggessi c e poi a o b viene sollevata l'eccezione "INDICE DEL
DESCRITTORE NON VALIDO"...
Ma è mai possibile?????????
Thaks a lot.
Ni

 Ni
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 
se dici che devi leggere dal resultset i campi nell'ordine in cui 
compaiono nella query, questo è un falso, o meglio, non c'è nessun 
vincolo imposto da jdbc.
D'altra parte potrebbe essere un problema del driver che stai usando.
A quale dbms ti devi connettere?
Non ho avuto mai problemi del genere con Oracle, PostgreSQL, MySQL ...
-- 
Fabio Ambrosanio
/quousque tandem/

 vincolo imposto da jdbc.
In effetti IIRC per massimizzare la portabilità dell'applicazione si
raccomandava di leggere le colonne nell'ordine in cui apparivano nella
select... ma è passato tanto di quel tempo che non saprei più dire dove l'ho
letto. Ma parrebbe essere corretto! Che database sta usando il nostro amico?
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

Visto che si parla di Driver Jdbc, ho una domanda da fare:
sto usando il driver di weblogic per oracle, e tutto il pacchetto che
contiene le classi per l'interrogazione al DB (ResultSet, Statement,
Connection).Con alcuni metodi della classe ResultSet, come last, first
ed altri, veniva fuori l'errore AbstactMethodError.Sono andato a vedere
la classe ResultSet in questione, ed in effetti i metodi in questione 
non sono sovrascritti.La cosa che + mi ha lasciato perplesso, e che
metodi come next() sono implementati semplicemente richiamando quelli
dell'interfaccia e cioè
public boolean next()throws SQLException
{
   conn.checkIfClosed();
   cc.checkIfEnable();
   return rs.next();  
}
dove conn è un Connection, cc è un ConnectionEnv e rs un
java.sql.ResultSet
Ora la mia domanda è: chi implementa veramente il next() visto che 
nell'interfaccia è solo, dichiarato, e nella classe di weblogic
viene solo richiamato?
Probabilmente mi sfugge qualcosa, e in realtà non mi è per niente 
chiara tutta la struttura(es. in tutto questo quando entra in
gioco il Driver)
Chiunque riesca a fugarmi qualche dubbio, anche parzialmente
 è ben accetto .
Grazie e ciao
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 dove l'ho letto.
Si', io ricordo vagamente di averlo letto molto tempo fa in qualche 
pubblicazione di Sun. Quindi lo faccio automaticamente. Vediamo.. si', era 
la guida JDBC del JDK1.1:
http://java.sun.com/products/jdk/1.1/docs/guide/jdbc/getstart/resultset.doc
.html#1002772
dice..
"Within each row, column values may be retrieved in any order, but for 
maximum portability, one should retrieve values from left to right and read 
column values only once."
..proprio perche' certi driver possono non gradire ordini diversi.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

> Che database sta usando il nostro amico?
Ho notato lo stesso preciso comportamento usando JDBC-ODBC puntando su un
DSN gestito dal driver di Microsoft Access, quindi tentando di accedere ad
un datafile .mdb
Se uso dei driver nativi java (Oracle Thin Client per esempio) questo non
succede (Oracle 8.1.7).
Penso che quello citato da CICCIO sia un comportamento dato dal bridge
JDBC-ODBC, visto che cmq su applicazioni native Win32 il driver per gli .mdb
non da questi problemi.
-------
"Lascia che gli eventi seguano la propria strada"

...

Hai ragione il problema (o falso problema ) mi si presenta solo
connettendomi ad un MS SQL Server 2000 via JDBC-ODBC.
CIAO


Credo che la Sun ancora consigli di non usare il suo bridge jdbc-odbc.
