# Probleme mit DriverManager.getConnection(..) - Endlosschleife, Java Absturz, Keine Exception



## luckoor (23. Dez 2012)

Hi Leute,

Hier erstmal ein kleiner Codeausschnitt:


```
try{
		connection = DriverManager.getConnection(url,userid,password);
		}catch (SQLException ex) {
	            // Fehler behandeln
				System.out.println("Bin in SQLException.");
	            System.out.println("SQLException: " + ex.getMessage());
	            System.out.println("SQLState: " + ex.getSQLState());
	            System.out.println("VendorError: " + ex.getErrorCode());
	            control = -2;
	            return control;
	        }catch (Exception e){
	        	control = -2;
	        	System.out.println("Bin hier in Ex1");
	        	return control;
}
```
Nun zu meinen Problem. Es funktioniert alles einwandfrei, soweit url, userid, und password korrekt eingegeben wurden sind. *Wenn ich jedoch jetzt bei der url irgendeinen mist reinschreibe, läuft er da in einer endlosschleife herum und Java stürzt ab. Er wirft nichtmal eine Exception.*

Laut Dokumentation sieht der Befehl so aus:


```
getConnection

public static Connection getConnection(String url,
                                       String user,
                                       String password)
                                throws SQLException

    Attempts to establish a connection to the given database URL. The DriverManager attempts to select an appropriate driver from the set of registered JDBC drivers.

    Parameters:
        url - a database url of the form jdbc:subprotocol:subname
        user - the database user on whose behalf the connection is being made
        password - the user's password 
    Returns:
        a connection to the URL 
    Throws:
        SQLException - if a database access error occurs
```

*Wieso wirft er mir, dann keine SqlException aus* bzw schießt sich aber dabei total ab, wenn die url nicht stimmt???? Eine Datenbankverbindung kann bei einer sinnlosen url ja nicht hergestellt werden. *Er müsste doch eigentlich irgendeine Exception werfen* oder kann man sowas nicht abfangen??? Ich steh gerade voll auf dem Schlauch haha^^.

Weiß jemand Rat von euch???


Mit freundlichen Grüßen 

luckoor


----------



## ARadauer (23. Dez 2012)

ja im grunde schon... er müsste ein exception werfen... was genau passierte den?


----------



## luckoor (23. Dez 2012)

Er bleibt an dieser Stelle *connection = DriverManager.getConnection(url,userid,password);* einfach hängen und lädt und lädt und lädt, er geht nicht weiter im Quellcode, es passiert nichts, als ob er sich in einer endlosschleife befindet.

*Edit:* ich habe ihn jetzt die ganze zeit laufen lassen, und nach 5minuten oder so wirft er erst die exception..... kann man das irgendwie beheben? ich kann doch den benutzer nicht solange warten lassen.


----------



## Camill (23. Dez 2012)

Hmm...schau dir mal [japi]DriverManager#setLoginTimeout(int seconds)[/japi] an, vielleicht hilft das ja.


----------



## luckoor (24. Dez 2012)

Gute Idee bei Drivermanager mal nachzuschauen, was es da so für methoden gibt. *Drivermanager.setLoginTimeout(int seconds) *ist auch die Methode die dafür zuständig ist. Jedoch beträgt die Zeit 0, wenn diese nicht gesetzt wird. Also ist schon optimal eingestellt. Auch wenn ich einen Wert von 1 sekunde einstelle ändert sich nichts daran, dass er gute 5 minuten braucht um eine SQLException bei *DriverManager.getConnection(url,userid,password);* rauszuhauen, wenn ich eine *sinnlose url eingebe*. Ich bin einfach nur verwirrt.


*Edit:*

ich hab gerade etwas anderes festgestellt. Damit ich auf die *DB* im Internet zugreifen kann *brauch* ich einen *VPN Zugang*. Ist dieser aus braucht es so 20 sekunden bis die Fehlermeldung erscheint. Ist er an und ich veränder die Adresse des hosts, sprich ich mach noch einen buchstaben hinten dran, brauch er die 5 Minuten, andernfalls bei einer andereren Adresse braucht er auch ungefähr 20 sekunden. Komisch... Aufjedenfall sind die 20sec besser als die 5 Minuten, nur das das Problem trotzdem bestehen bleibt, falls vpn benötigt wird und sich jemand bei der korrekten Adresse vertippt. Ich muss das dann nochmal bei einer datenbank ohne vpn im internet testen.

*Edit2:*
es ist s***** egal was für url drin steht, je nach dem, manchmal gehts schneller (20 sek) und manchmal brauchter halt wieder seine 5 minuten um eine SQLException rauszuhauen  und mit vpn hat das auch nichts zu tun.


----------

