Переменная соединения не может быть разрешена - PullRequest
1 голос
/ 03 декабря 2010
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();


 }}

Затмение говорит:

Переменная «con» не может быть преобразована в тип.

Почему?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2010

Проблема в том, что вы объявили con внутри блока try, но попробуйте использовать его вне блока.Вы должны сделать следующее:

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();

Ошибка была вызвана тем, что, как только выполнение выходит из блока try, переменная con выходит из области видимости и больше не отображается.

Вот небольшая информация о области действия : прокрутите до первого раздела, озаглавленного Переменные

Область действия переменной - это блок кода, для которогопеременная действительна.Scope также контролирует, когда переменная создается и уничтожается при запуске программы.Существует четыре вида переменных, которые мы должны различать:

2 голосов
/ 03 декабря 2010

con переменная является локальной для блока try,

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

Вы обращаетесь к con вне блока try.

Это должно быть

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
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...