PDA

View Full Version : [Android - JAVA] timeout connessione database


topix93
24-09-2012, 10:21
in java quando cerco di connettermi ad un host che non è in ascolto dopo qualche secondo ricevo questo errore:

Exception in thread "main" org.postgresql.util.PSQLException: Connessione rifiutata. Controllare che il nome dell'host e la porta siano corretti, e che il server (postmaster) sia in esecuzione con l'opzione -i, che abilita le connessioni attraverso la rete TCP/IP.
at org.postgresql.Driver$ConnectThread.getResult(Driver.java:346)
at org.postgresql.Driver.connect(Driver.java:269)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Main.main(Main.java:20)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.connect0(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.postgresql.core.PGStream.<init>(PGStream.java:60)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:74)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:123)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:28)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:20)
at org.postgresql.jdbc3g.Jdbc3gConnection.<init>(Jdbc3gConnection.java:22)
at org.postgresql.Driver.makeConnection(Driver.java:391)
at org.postgresql.Driver.access$100(Driver.java:45)
at org.postgresql.Driver$ConnectThread.run(Driver.java:306)
at java.lang.Thread.run(Unknown Source)

in android invece si blocca l'applicazione e non ricevo nessuna eccezione. come posso risolvere?

demos88
25-09-2012, 11:30
Ma se non è in ascolto (server SQL down?) è ovvio che non si connetta...
Non ho capito cosa vuoi fare... comunque le eccezioni andrebbero gestite, forse intendi quello?

topix93
25-09-2012, 13:01
no... io voglio riuscire a gestire, in android, il caso in cui viene inserito un ip sbagliato a cui connettersi. se provo a fare una cosa del genere in un'applicazione java il tutto funziona, restituendomi un eccezione. mentre in android non viene restituita nessuna eccezione... probabilmente potrebbe essere un problema di driver

demos88
25-09-2012, 15:20
Magari posta il codice che mostra come effettui la connessione

topix93
25-09-2012, 15:39
String url = "jdbc:postgresql://" + ip +":" + porta +"/" + nomeDB + "?user=" +username + "&password=" + password;
DriverManager.setLoginTimeout(5);
connection = DriverManager.getConnection(url);

Statement st = null;
ResultSet rs = null;
try {
st = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = st.executeQuery(query);
} catch (SQLException e) {
e.printStackTrace();
}