2016-06-21 8 views
1

Meine Anwendung verwendet eine Mysql-Verbindung, die diesen Code erhalten wird, mit:Java Warten auf Mysql Verbindung

public static void Connect(){ 
    try 
    { 
     Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     String url = "jdbc:mysql://" + host + ":" + port + "/"+ db; 
     ct = DriverManager.getConnection(url, user, pass); 
     st = ct.createStatement(); 
     System.out.println("Csatlakozva....\n"); 
    } 
    catch (InstantiationException e) 
    { 
     Main.textArea.setText("Error : Instantiation!"); 
     //System.err.println("Error : Instantiation"); 
     e.printStackTrace(); 
    } 
    catch (IllegalAccessException e) 
    { 
     Main.textArea.setText("Error : Illegális Behatolás!"); 
     //System.err.println("Error : Illegális Behatolás!"); 
     e.printStackTrace(); 
    } 
    catch (ClassNotFoundException e) 
    { 
     Main.textArea.setText("Error : Class Nem Található!"); 
     //System.err.println("Error : Class Nem Található!"); 
     e.printStackTrace(); 
    } 
    catch (SQLException e) 
    { 
     Main.textArea.setText("Error : Adatbázis Nem Található!"); 
     //System.err.println("Error : Adatbázis Nem Található!"); 
     e.printStackTrace(); 
    } 
} 

Wenn der MySQL-Datenbank-Server nicht ausgeführt wird und kann daher meine App öffnen keine Verbindung, wie mache ich meine App warten bis eine Verbindung hergestellt werden kann?

+0

Können Sie einen Kommentar in Ihrem Code hinzufügen, um anzuzeigen, wo die Wartezeit ist? Ist dies eine lokale oder entfernte MySQL-Instanz? Welches operative System benutzen Sie? –

+0

Also, was genau ist Ihre Frage hier? Was willst du passieren? –

+0

@Michael Markidis Was ich tun möchte, ist ... da ist mein Verbindungscode ... Ich möchte, wenn die Mysql nicht ausgeführt wird, so dass meine App keine Verbindung öffnen kann, muss meine App auf die Verbindung warten, um etwas zu tun. –

Antwort

1

Um setzen Sie Ihre Connect Methode nicht zurück zu haben, bis eine Verbindung tatsächlich erhalten, können Sie Ihren vorhandenen Try-Block mit einer Schleife umgeben benötigen. So etwas wie dieses:

Exploring und Verständnis dieser Art von Low-Level-Probleme ist eine gute Übung. Ich möchte hier jedoch nur notieren, dass (meiner Erfahrung nach) die meisten Anwendungen einen Verbindungspool verwenden, um Datenbankverbindungen zu verwalten. Im Allgemeinen würde der Verbindungspool die Funktionalität des Blockierens (normalerweise für eine begrenzte Zeit) bereitstellen, bis eine Verbindung erhalten werden kann. Mit anderen Worten, der Verbindungspool ermöglicht nicht nur die Wiederverwendung zuvor erstellter Verbindungen, sondern auch Verbindungsversuche, wenn dies erforderlich ist.

+0

Danke, das funktioniert gut für mich :) –

0

Ich vermute, Sie haben Thread-Problem.

können Sie den JDBC-Verbindungscode zu neuem Thread

private class JDBCConnection extends Thread{ 

public void run(){ 
.... 
} 

}