S
Stradi
Gast
hallo,
ich benötige einen Thread, der mir in regelmäßigen abständen schaut, ob eine Datenbank für einen anderen Thread erreichbar ist und ein entsprechendes flag setzt! Leider weiß ich aber jetzt nicht, wie ich in JAVA performant und vernünftig programmiert erfahre, ob ich auf eine Datenbank "hinkomme" (konkret: ob ich inserts darauf ausführen kann) oder nicht... ich bräuchte also so eine art "ping-methode" für eine datenbankverbindung... gibts sowas in der richtung, oder gibts konstruktieve vorschläge wie man das anders lösen kann?!
bisher hab ich folgende lösung...:
ich mag diese lösung allerdings nicht, da sie mir ganz und gar nicht schön erscheint... bspw. bin ich mit der con.isClosed() methode ganz und garnicht glücklich. ist diese denn wohl true, wenn der DBServer einfach aus irgend einem grund nicht erreichbar ist.
vielleicht kennt ja jemand eine vernünftigere methode, das zu lösen!
danke schon im voraus für eure gedanken,
stradi
ich benötige einen Thread, der mir in regelmäßigen abständen schaut, ob eine Datenbank für einen anderen Thread erreichbar ist und ein entsprechendes flag setzt! Leider weiß ich aber jetzt nicht, wie ich in JAVA performant und vernünftig programmiert erfahre, ob ich auf eine Datenbank "hinkomme" (konkret: ob ich inserts darauf ausführen kann) oder nicht... ich bräuchte also so eine art "ping-methode" für eine datenbankverbindung... gibts sowas in der richtung, oder gibts konstruktieve vorschläge wie man das anders lösen kann?!
bisher hab ich folgende lösung...:
Code:
public void run() {
Connection con = null;
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
for(;;){
try {
if(con!=null&&con.isClosed()){
//if database is closed, set dbUpFlag = false
logInst.setDBUpFlag(false);
System.out.println(logInst.getDBUpFlag());
}else{
//trying to connect to database
con = DriverManager.getConnection("jdbc:odbc:SWING_S");
//on failure ==> catch-block
//on sucess, set dbUpFlag = true
logInst.setDBUpFlag(true);
System.out.println(logInst.getDBUpFlag());
}
WatchDBThread.sleep(2000);
} catch (SQLException e) {
//if an SQLException occures, set dbUpFlag = false
e.printStackTrace();
logInst.setDBUpFlag(false);
System.out.println(logInst.getDBUpFlag());
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
ich mag diese lösung allerdings nicht, da sie mir ganz und gar nicht schön erscheint... bspw. bin ich mit der con.isClosed() methode ganz und garnicht glücklich. ist diese denn wohl true, wenn der DBServer einfach aus irgend einem grund nicht erreichbar ist.
vielleicht kennt ja jemand eine vernünftigere methode, das zu lösen!
danke schon im voraus für eure gedanken,
stradi