Newsgroup: it.comp.java
Titolo: JDBC e Oracle via ODBC

Salve, sto cercando di accedere ad un db oracle 8i, ma non ci riesco, la
connessione ODBC č corretta, infatti utilizzando altri linguaggi tutto
funziona alla perfezione.
Le righe di codice che ho utilizzato le riporto di seguito:
      .
      .
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      System.out.println("1");
      Connection
conn=DriverManager.getConnection("jdbc:odbc:OracleJ","dmadmin","dmadmin");
      System.out.println("2");
      Statement
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_U
PDATABLE);
      ResultSet rs=stmt.executeQuery("Select * from JavaDaniele");
      rs.moveToInsertRow();
      .
      .
Il programma stampa 1 ma non stampa 2 e non restituisce nessun errore, si
blocca semplicemente la JVM, e per sbloccarla devo uccidere il processo
"java.exe" dal Task Manager. Devo necessariamente accedere al db utilizzando
ODBC, questo perchč non devo legarmi per nessuna ragione ad un tipo
specifico di DB.
Sto lavorando sotto Win2000 Pro con il JDK 1.4.0.
Mi sapete dire dove sbaglio?
Grazie per il vostro aiuto.
Daniele
d_impelli(O)
yahoo.com

 specifico di DB.
Puoi usare anche i driver Jdbc per questo, cosi' tagli via la parte
relativa ad ODBC che rallenta e basta.
Davide
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 relativa ad ODBC che rallenta e basta.
Si infatti per ora stavo prendendo in cosiderazione questa possibilità, ma
non mi funziona neanche con i driver JDBC, o meglio questa volta mi va in
errore e mi dice TNSAddress.SOException, il problema è che qualsiasi cosa
scrivo dopo "..thin:@" mi restituisce sempre lo stesso errore. Io pensavo
che si doveva scrivere il nome del servizio che si trova nel file
tnsnames.ora, ma sembra che vuole qualcosa di diverso.
Grazie per il tuo interessamento.
Daniele

 nel file tnsnames.ora, ma sembra che vuole qualcosa di diverso.
l'url e' cosi':
jdbc:oracle:thin:@<server>:<porta>:<istanza>
<server> e' il nome o l'indirizzo IP del server Oracle
<porta> e' la porta su cui il listener ascolta, di default dovrebbe
essere 1521
<istanza> e' il nome del servizio/SID a cui vuoi connetterti
(quello scritto nel TNSNAMES.ORA).
Ricordati che i driver Jdbc sono "puri", cioe' il file TNSNAMES.ora
local non viene guardato. Si connette direttamente al server usando
l'indirizzo e la porta che gli dai tu.


 l'indirizzo e la porta che gli dai tu.
Grazie per questa proverbiale delucidazione, io vorrei sapere dove sta
scritto però. Dalla documentazione di Oracle, forse a causa della mia scarsa
conoscenza dell'inglese, avevo capito che era sufficiente riportare il nome
del servizio. Adesso si che funziona.
Ti posto anche la parte di documentazione di Oracle dalla quale io tuttora
non riesco a capire dove sta scritto che il parametro <database> è formato
da tre campi.
JDBC OCI8:
  Connection conn =
    DriverManager.getConnection ("jdbc:oracle:oci8:@<database>",
                                 "scott", "tiger");
  <database> is either an entry in tnsnames.ora or a SQL*net
  name-value pair.
Grazie Ancora
Ciao Daniele
d_impelli(O).
yahoo.com

                                  "scott", "tiger");
Questo si riferisce al driver oci8, che si appoggia alle Oracle
Client Interface, non e' un driver "puro", ed infatti vuole che
il client Oracle sia installato sulla macchina per funzionare.


Ciao, per quanto riguarda la connessione non ti legherai ad uno
specifico db utilizzando un semplice file di properties ad es:
#db.driver = sun.jdbc.odbc.JdbcOdbcDriver
db.driver = oracle.jdbc.driver.OracleDriver
#db.url = jdbc:odbc:TEST
db.url = jdbc:oracle:thin:@dbnt-oracle1:1521:TEST
db.user = jtest
db.password = jtest
Usando Class.forName puoi utilizzare l'implementazione che vuoi tu
(evitando di utilizzare import...) e anche tutti gli altri parametri
li puoi leggere e poi passare. (scusa per come scrivo, sono di fretta)
Per quanto riguarda il tuo problema purtoppo non so aiutarti, non mi č
mai capitato che durante una connessione a db la JVM si bloccasse
senza lanciare lamentele... Mi sembra strano, e poi non ho mai usato
SDK1.4.
ciao
tityrus