Il codice che utilizzo è il seguente:
-------
Class.forName( "oracle.jdbc.OracleDriver" );
Connection conn = DriverManager.getConnection
("jdbc:oracle:thin:@host:7280:nomeDB", "user", "pass");
-------
Da cosa può dipendere?
grazie
> sto provando a connettermi ad un database oracle utilizzando JDBC
> ma, appena prova ad eseguire la connessione, mi viene restituito il
> seguente messaggio di errore:
> ----------
> java.sql.SQLException: Eccezione IO: Got minus one from a read call
> ----------
>
> Il codice che utilizzo č il seguente:
> -------
> Class.forName( "oracle.jdbc.OracleDriver" );
> Connection conn = DriverManager.getConnection
> ("jdbc:oracle:thin:@host:7280:nomeDB", "user", "pass");
> -------
>
> Da cosa puň dipendere?
Prova a scaricare la versione piů recente del driver dal sito di Oracle.
Io ho risolto cosě.
Ciao, Y.
Ho appena scaricato l'ultima versione del driver,
ma l'errore permane e si sono aggiunti questi altri errori:
Caused by: oracle.net.ns.NetException: Got minus one from a read call
at oracle.net.ns.Packet.receive(Packet.java:243)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:259)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
Può dipendere dal fatto che c'è un proxy?
> Può dipendere dal fatto che c'è un proxy?
Hai messo un proxy tra l'applicativo Java e il server Oracle?
Che genere di proxy? Hai verificato che sia supportato da Oracle?
Y.
Tradotto dall'inglese:
"Ottenuto -1 da una chiamata in lettura"
Ora prova a ricordarti: quale classe contiene un metodo "read" che in
caso di fine flusso restituisca "-1" ?
http://java.sun.com/javase/6/docs/api/java/io/InputStream.html#read()
Il problema secondo me va cercato "dietro" Java: per qualche motivo la
connessione viene chiusa durante la negoziazione iniziale del
protocollo.
La questione del proxy può influenzare relativamente: se è un proxy per
la sola navigazione web non c'entra nulla con Java, se invece per
connetterti al database devi passare attraverso un socks proxy
(utilizzando Hummingbird ad esempio), devi capire con l'amministratore
di rete perchè la connessione ti venga troncata.
--
Scientology: se la conosci la eviti, se la conosci non ti uccide...
http://xenu.com-it.net - http://xenu.freewinds.cx - http://www.xenu.net
(per rispondere personalmente leva IlDitoDalCulo)
---> 09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0 <---
il driver ti sta dicendo che dall'altra parte l'host gli risponde fuffa.
sei sicuro che su quella porta (che sembra molto casuale rispetto a
quella standard) ti risponda oracle?
java.sql.SQLException: Listener refused the connection with the
following error:
ORA-12505, TNS:listener does not currently know of SID given in
connect descriptor
at oracle.jdbc.driver.SQLStateMapping.newSQLException
(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException
(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException
(DatabaseError.java:199)
at oracle.jdbc.driver.DatabaseError.throwSqlException
(DatabaseError.java:480)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:413)
at oracle.jdbc.driver.PhysicalConnection.<init>
(PhysicalConnection.java:508)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:203)
at oracle.jdbc.driver.T4CDriverExtension.getConnection
(T4CDriverExtension.java:33)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DBConnection.main(DBConnection.java:14)
Caused by: oracle.net.ns.NetException: Listener refused the connection
with the following error:
ORA-12505, TNS:listener does not currently know of SID given in
connect descriptor
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:361)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:966)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:292)
> La porta corretta è la 1521 infatti l'errore è cambiato ed adesso
> è il seguente:
>
>
> java.sql.SQLException: Listener refused the connection with the
> following error:
> ORA-12505, TNS:listener does not currently know of SID given in
> connect descriptor
Devi verificare che lato Oracle il listener sia configurato per
accettare connessioni a "nomeDB" (riprendendo il tuo esempio:
"jdbc:oracle:thin:@host:1521:nomeDB")
Y.
> java.sql.SQLException: Listener refused the connection with the
> following error:
> ORA-12505, TNS:listener does not currently know of SID given in connect
> descriptor
adesso è il nome del database a non essere corretto.