# Verbindung aufbauen



## JavaCat++ (23. Mrz 2017)

Hi Leute, folgender Code:



```
public static Connection conn;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
      
        try (Connection conn = getConnection("oracle.jdbc.OracleDriver", "jdbc:oracle:thin:@i011-533:1521:jupro",
                "***", "***")) {
          
            conn.setAutoCommit(false);
          
        }
```

Wie kriege ich das hin, dass er das conn in dem try-Block oben in die statische Variable speichert? Weil irgendwie kriege ich das gerade nicht hin Oo
(Das ist auch nur ein Code-Schnipsel)

LG


----------



## mrBrown (23. Mrz 2017)

`Klassenname.conn` nutzen, statt eine neue `Connection conn` zu definieren


----------



## Thallius (23. Mrz 2017)

Ist so eine Connection eigentlich reintrant? Oder was passiert wenn man die statische Connection dann aus zwei Threads heraus gleichzeitig benutzt?


----------



## mrBrown (23. Mrz 2017)

Thallius hat gesagt.:


> Ist so eine Connection eigentlich reintrant? Oder was passiert wenn man die statische Connection dann aus zwei Threads heraus gleichzeitig benutzt?


Passiert in 'nem Unit-Test eher selten


----------



## JavaCat++ (23. Mrz 2017)

mrBrown hat gesagt.:


> `Klassenname.conn` nutzen, statt eine neue `Connection conn` zu definieren


Das habe ich leider auch schon probiert


----------



## mrBrown (23. Mrz 2017)

JavaCat++ hat gesagt.:


> Das habe ich leider auch schon probiert


...und?
Edit: grad gemerkt:

Versuch mal

```
public static Connection conn;

    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
    
        try (Connection conn = getConnection("oracle.jdbc.OracleDriver", "jdbc:oracle:thin:@i011-533:1521:jupro",
                "***", "***")) {
        
            conn.setAutoCommit(false);
          Klassenname.conn = conn;
       
        }
}
```


----------



## JavaCat++ (24. Mrz 2017)

Ja Danke, das hat geklappt! 

Warum try (Klassenname.connn =...) nicht funktioniert hat, was ich allerdings auch nicht.


----------



## stg (24. Mrz 2017)

JavaCat++ hat gesagt.:


> Warum try (Klassenname.connn =...) nicht funktioniert hat, was ich allerdings auch nicht.



Weil die Resource im try-with-resources implizit als `final` deklariert ist.

Der Compiler behandelt also

```
try (Connection conn = getConnection(...)
```
genau so, als ob dort stünde

```
try (final Connection conn = getConnection(...)
```

Damit wird gewährleistet, dass die Variable conn zu jedem Zeitpunkt der Ausführung des try-Blocks auch tatsächlich auf das gleiche Objekt zeigt.


----------

