PDA

View Full Version : [JAVA JDBC] Determinare esistenza di una istanza DB


SodoMyzer
30-09-2009, 14:58
Ciao a tutti!
Ultimamente mi son trovato dinnanzi a un piccolo dilemma.
Sto partecipando ad un corso, nella quale sede interroghiamo con JAVA un server Oracle 9.2.
Ho installato sul mio portatile lo stesso server e la stessa tabella su cui ci stiamo esercitando, ma ovviamente la stringa di connessione è diversa.
Avrei quindi la necessità di scrivere una classe che, se trova il DB del corso ci si connette, altrimenti si connette al DB locale.

Ora, so dell'esistenza di frameworks Hybernate e Struts ecc ecc, ma visto che per ora non ho tempo di studiarlo, e le specifiche prevedono il solo JDBC "classico", avrei bisogno di un sistema per determinare se esiste una istanza di un db.

Avevo pensato di gestire un eccezione ma sarei più contento magari di trovare un metodo che magari restituisce un boolean se trova un istanza del primo DB.

Grazie in anticipo!

SodoMyzer
01-10-2009, 15:08
Beh...alla fine per una scelta rapida adatta alla situazione ho usato semplicemente un eccezione:

public Connection connPrimoDbCheTrovi(){
Connection conn=null;
try {
DriverManager.registerDriver(new OracleDriver());
conn =DriverManager.getConnection("jdbc:oracle:thin:@server1:1521:db1","user1","pass1");
} catch (SQLException e) {
try {
DriverManager.registerDriver(new OracleDriver());
conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:db2","user2","pass2");
} catch (SQLException e1) {
e1.printStackTrace();
}
}
return conn;
}


Ma...nel caso in cui ho a che fare con più di due db e non volessi fare in questo modo?
Grazie ancora in anticipo!

yorkeiser
01-10-2009, 16:24
Anche con più database, puoi utilizzare la soluzione che hai proposto:

String[] stringhe_di_connessione;
boolean connesso=false;
int i=0;

while (!connesso && i<stringhe_di_connessione.length)
{
try
{
connetti(stinghe_di_connessione[i]);
...
connesso=true;
}
catch(..) {i++};
}

if (!connesso) apri la connessione locale

SodoMyzer
05-10-2009, 13:06
Grazie!
Effettivamente il ciclo con un array è più leggibile e schematico:D !