Newsgroup: it.comp.java
Titolo: JDBC-ACCESS -> tipi primitivi

Ciao a tutti,
volevo sapere se qualcuno sa per caso dove posso
trovare una tabella dove sono confrontati i tipi
primitivi tra java e access?
Bhe mi basterebbe anche sapere a
cosa equivale l'intero lungo di access
in JAVA.
Non ditemi long, che non è vero, mi da errore...esattamente:
SQLState:    (22005)
Message:  ([Microsoft][Driver ODBC Microsoft Access 97] Tipi
 di dati non corrispondenti nell'espressione criterio.)
Vendor:   (-3030)
--
--
Ciao
                                        Roche
               - The Mannix -
la solita minestra punk?
Clicca quì sotto:
 
http://stage.vitaminic.it/the_mannix/

Mi sà che invece è prorio long.....a me ha sempre funzionato.
Comunque, se non erro, la descrizione dell'errore è relativa a qualcosa che
non và nella stringa SQL (Es. Select ..... Where Numero="1243" dove il campo
numero è numerico - potrebbe trattarsi di una distrazione). Per tipi di dati
incompatibili nelle assegnazioni non otterresti quell'errore.
Spero di esserti stato di aiuto
Ciao

Io faccio questo:
        PreparedStatement stmt = con.prepareStatement
        ("SELECT fr_cod14 FROM  FRIVGIGI  "+
        "WHERE contatore = '"+db_ind+"' ");
dove contatore č un intero lungo
--
--
Ciao
                                        Roche
               - The Mannix -
la solita minestra punk?
Clicca quě sotto:
 
http://stage.vitaminic.it/the_mannix/

         "WHERE contatore = '"+db_ind+"' ");
Prova a fare:
PreparedStatement stmt = con.prepareStatement
("SELECT fr_cod14 FROM  FRIVGIGI  "+
"WHERE contatore = "+db_ind);
ciao
Niko

ho usato i prepared e mi va....
č proprio strano java...
Ho fatto cosě:
        PreparedStatement stmt = con.prepareStatement
        ("SELECT fr_cod14 FROM  FRIVGIGI  "+
        "WHERE contatore = ? ");
  stmt.setInt(1, f);
-----------------------------------
Perň mi da un'altro errore,
a runtime nella funzione dopo...
cioč:
-----SQLException-----
SQLState:    (null)
Message:  (No ResultSet was produced)
Vendor:   (0)
MA IO IL RESULTSET NON CE L'HO!!!!
FORSE č per questo?
--------------
Cmq l'ho postato dopo CIAOCIAO
e GRAZIE


Allora
il consiglio di Nicola è giusto, il punto interrogativo non è ammissibile.
Nel linguaggio SQL se il campo su cui verificare la condizione che segue la
clausola where è numerico allora devi scrivere; SELECT NomeCampo FROM
NomeTabella WHERE NomeCampo=valore , senza virgolette, se invece il campo è
testo devi scrivere WHERE NomeCampo="valore" tra virgolette o apici. Nel tuo
caso:
PreparedStatement stmt = con.prepareStatement("SELECT fr_cod14 FROM
FRIVGIGI  WHERE contatore = "+db_ind);
deve funzionare (se "FRIVGIGI"  è il nome della tabella e "fr_cod14" è il
nome del campo).
A questo punto... facci sapere.
Ciao

 il consiglio di Nicola è giusto, il punto interrogativo non è ammissibile.
In che senso?!?
Ciao,
 Stefano
----------
"X WindowSSS, teSSSoro mio... lo odieremo per SSSempre"
Bill Gollum
----------

 Vendor:   (0)
Non direi che Java è strano, direi che forse ti manca qualche
informazione.
Hai fatto
rs = stmt.executeQuery()
prima di accedere al resultset?
Inoltre - in SQL devi mettere le stringhe tra apici e i numeri senza
apici, ad esempio
WHERE nome='Pippo' and eta=34
Quindi o fai
stmt = c.createStatement();
rs = stmt.executeQuery("SELECT fr_cod14 FROM  FRIVGIGI WHERE contatore =
" + cont);
while (rs.next()) { ...
oppure fai
stmt = c.prepareStatement("SELECT fr_cod14 FROM FRIVGIGI WHERE contatore
= ?");
stmt.setInt(1, cont);
rs = stmt.executeQuery();
while (rs.next()) { ...
In generale, usi un PreparedStatement quando hai da fare più volte la
stessa query con l'unica differenza che il contatore è differente.
Questo fa sì che il tuo RDBMS si 'prepari' per query multiple
precompilando lo statement, generando l'access plan e così via una volta
sola; in questo modo cambi il parametro ed il db è già pronto per
l'interrogazione. Avrai qualcosa del tipo
int[] contatori = { 1, 2, 3, 4 };
stmt = c.prepareStatement("SELECT fr_cod14 FROM FRIVGIGI WHERE contatore
= ?");
for (int i = 0; i < contatori.length; i++) {
  stmt.setInt(1, contatori[i]);
  rs = stmt.executeQuery();
  while (rs.next()) { ... }
  rs.close();
}
stmt.close();


 il consiglio di Nicola è giusto, il punto interrogativo non è ammissibile.
Il punto interrogativo va bene. Stava inizializzando un prepared statement,
non direttamente uno statement SQL.
Dopo aver dichiarato in quel modo la query prima di eseguirla bisogna
settare il valore che andra' messo al posto del punto interrogativi
attraverso i vari metodi stmt.setInt o stmt.setString ecc.
Utilizzare un prepared statement ha senso (ed e' anche utile) se bisogna
eseguire molte volte una query strutturalmente identica in cui quello che
cambia sono solo dei parametri.
Per quanto riguarda le virgolette se utilizzi il prepared statement pensa a
tutto lui. Quando viene dichiarato basta utilizzare (ad esempio) "SELECT
campo1 FROM table WHERE stringa = ?". (almeno per i driver JDBC di Oracle e
MySql, immagino che funzionino tutti allo stesso modo)
byez
keii.

 wrote in message
news:O51z6.553$wG3....@news.infostrada.it...
