2010-12-03 19 views
1
public class GestorBase{ 

public static void main(String[] args){ 
    try 
    { 
    Class.forName("org.sqlite.JDBC"); 
    } 
    catch (ClassNotFoundException e) { 
    System.out.println("Unable to load driver class"); 
    // TODO: handle exception 
    } 
    try { 
    Connection con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite"); 
    } catch (SQLException e) { 
    // TODO Auto-generated catch block 
    System.out.println("error al buscar la base de datos"); 
    } 

    Statement sentencia = con.createStatement(); 


}} 

Eclipse dit:variables de connexion ne peut être résolu

variable "con" ne peut être résolu à un type.

Pourquoi?

Répondre

2

variables con est locale pour essayer bloc,

try { 
    Connection con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite"); 
    } 

vous accédez con dehors côté du bloc d'essai.

Il devrait être

Connection con = null; 
Statement sentencia = null; 
try { 
     con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite"); 
     sentencia = con.createStatement(); 
} catch (SQLException e) { 
     // TODO Auto-generated catch block 
     System.out.println("error al buscar la base de datos"); 
} catch (Exception ex){ 

    //handle it 
} 
+0

Et vous obtenez un NPE si elle échoue .... –

+0

Hawtin - @ Tom amure Bien sûr, ce n'est pas OP demande au sujet. –

+0

life.java En effet. C'est un bug introduit avec votre réponse. –

2

Le problème est que vous avez déclaré con à l'intérieur du bloc try, mais essayez de l'utiliser en dehors du bloc. Vous devez faire ce qui suit:

Connection con = null; 
try { 
    con = DriverManager.getConnection("jdbc:sqlite:db/Freepark.sqlite"); 
} catch (SQLException e) { 
    // TODO Auto-generated catch block 
    System.out.println("error al buscar la base de datos"); 
    return; // return because nothing can be done w/out a connection 
} 

Statement sentencia = con.createStatement(); 

L'erreur a été provoquée parce qu'une fois que l'exécution sort du bloc try, la variable con est hors de portée, et n'est plus visible.

Here is a little info about scope: défiler à la première section intitulée Variables

la portée de la variable est le bloc de code pour lequel la variable est valide. Scope contrôle également quand la variable est créée et détruite pendant l'exécution du programme. Il existe quatre types de variables, il faut distinguer:

+0

Et puis vous obtenez un NPE si cela échoue ... –

+0

@Tom, bien sûr, je voudrais ajouter une vérification nulle, ou gérer le mieux dans la capture. Mais ceci est juste à des fins éducatives. – jjnguy

+0

@Tom, et dans une méthode de bas niveau qui se connecte à une base de données, je lancerais tout de même les exceptions. Il n'y a probablement aucun bon moyen de les gérer à ce moment-là. – jjnguy