# [MYSQL] Problem mit Connection und Abfrage



## Metalsoft (25. Mai 2004)

Hallo

ich poste erstmal mein stückchen code das ich der FAQ entnommen hab

```
try
    {
    Class.forName("org.gjt.mm.mysql.Driver");
    }
    catch(ClassNotFoundException cnfe)
    {
    System.out.println("Treiber kann nicht geladen werden: "+cnfe.getMessage());
    }
    
    
    try
    {
    Connection conn = DriverManager.getConnection("***DAS HIER FUNKTIONIERT***") ;
    }
    catch(SQLException sqle)
    {
    System.out.println("Verbindung ist fehlgeschlagen: " + sqle.getMessage());
    }
    
    try
    {
    Statement stmt = conn.createStatement() ;    
    }
    catch(SQLException sqle1)
    {
    System.out.println("Abfrage fehlgeschlagen: " + sqle1.getMessage());
    }
```
Bei dem letzten block fangen die probleme an 

```
Statement stmt = conn.createStatement() ;
```
Da sagts mir beim compilieren

```
"Application1.java": cannot resolve symbol: variable conn in class db1.Application1 at line 79, column 22
```
Ich versteh das mal so das mein "conn" irgendwie weg is. Daher dürfe der Fehler wohl hier liegen :

```
Connection conn = DriverManager.getConnection("***DAS HIER FUNKTIONIERT***") ;
```
Ich dachte irgendwie das "conn" bestehen bleibt , is das nich der fall ?

Bitte um Hilfe

MfG
Metal


----------



## nollario (25. Mai 2004)

Connection wird innerhalb von dem try catch Block deklariert. Das ist schlecht, da es dann auch nur dort sichtbar ist....

Wenn Du den ganzen Kram in einen try catch Block packst, sollte es gehen...


```
try
{
   Connection conn = DriverManager....

    Statement stmt = conn.createStatement...

     ... bla

 }
catch (Exception ex)
{}
```

Du kannst das Ganze natürlich auch in den einzelnen try catch Blöcken lassen, dann musst du aber die Variablen Deklarationen ausserhalb machen.


```
Connection conn =  null;
Statement stmt = null;

try
{
   conn = ....
}
catch...

try
{
    stmt = ...
}
catch....
```


----------



## Metalsoft (25. Mai 2004)

Hi

und wie krieg ich dann die unterschiedlichen exceptions ? ich will ja dann auch wissen wo der fehler liegt wenn einer auftritt.


----------



## nollario (25. Mai 2004)

```
try
{
....
}
catch (SQLException ex)
{}
catch(SowiesoException ex2)
{}
... // beliebig fortsetzbar
```


----------



## Metalsoft (25. Mai 2004)

Ok werd ich mal ausprobieren 

Vielen dank für die schnelle antwort.

Nächste frage : mit conn.close(); beendet man ja die verbindung , soll ich das dann echt alles in den einen block reinpacken ? Is ja in der FAQ auch anders geschrieben.


----------



## Metalsoft (25. Mai 2004)

"Connection conn =  null; 
Statement stmt = null; "

oh verdammt das hatte ich übersehen. Hattest du glaub ich noch nachträglich editiert oder so ... danke dann is ja alles klar


----------



## nollario (25. Mai 2004)

wie gesagt:

du kannst auch mehrere try-catch blöcke verwenden... hauptsache, das connection und statement objekt ist sichtbar!!!!! 


```
Connection conn = null;
Statement stmt = null;

try
{
    // Connection oeffnen und SQL Abfrgaen/ Updates
}
catch (..)
{}

// anderer  Code

// Connection nochmal nutzen
try
{
...
}
catch (..)
{
...
}
// finally wird IMMER ausgefuehrt, bei Exception und normalem ablauf
finally
{
    // muss auch gecatched werden :)
   try
    {
        stmt.close();
        con.close();
    }
    catch(..)
     {}
}
```


----------

