2016-03-03 4 views
0

У меня есть блок кода switch-statement, и я хочу использовать ссылку на объекты соединения и Statement. Я получаю сообщение об ошибке при использовании кода ниже; Я что-то упускаю? Должно ли это быть внутри каждого метода? Ошибка «примерить» является недопустимым Модификатор и конструктор headname excpectedПовторное использование соединений и заявлений

public class ClassSelectorApp { 
     try{ 
     public static final Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", ""); 
     Statement myStmt = con.createStatement(); 
     } 
     catch(java.sql.SQLException SQL) { 
       SQL.printStackTrace(); 
      } 
+0

Это не внутри метода. Скорее всего, нужно поставить 'Connection' в качестве глобальной переменной и инициализировать конструктор. – 3kings

+0

Есть ли способ поставить его вне метода, чтобы я мог повторно использовать его несколькими способами? – Rassisland

+0

Да, перечитайте мой комментарий, я собираюсь продолжать добавлять вещи – 3kings

ответ

0

Вам это нужно внутри метода, но если вы хотите повторно использовать переменную соединение попробовать как этого

public class ClassSelectorApp 
{ 
    public static Connection con; 

    public ClassSelectorApp() 
    { 
     //insert the TRY AND CATCH STUFF 
     con = DriverManager.getConnection("jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", "", ""); 
    } 

    public void someMethod() 
    { 
     //Most likely need some try catch here also. 
     Statement myStmt = con.createStatement(); 
    } 

    public static void main(String[] args) 
    { 
     //Create an object of your class and invoke a method. 
     ClassSelectorApp a = new ClassSelectorApp(); 
     a.someMethod(); 
    } 

} 
-1

Connections как правило, не могут использоваться повторно - вы используете их некоторое время, затем закрываете их и отбрасываете ссылку. Чтобы сделать ссылку «Соединение» видимой для нескольких методов, вы можете сделать ее переменной-членом и инициализировать ее в так называемом «инициализаторе». Посмотрите «статический инициализатор» (иногда WRONGLY называемый «статическим блоком») и «конструктор» для инициализации переменных класса и экземпляра, соответственно.

public class Foo 
{ 
    private Connection cxn; 
    { 
    try { 
     cxn = DriverManager.getConnection(
     "jdbc:mysql://localhost:3306/ClassSelector?autoReconnect=true&useSSL=false", 
     "", ""); 
    } 
    catch(SQLException exc) 
    { 
     logger.error(exc.getLocalizedMessage()); 
     throw new IllegalStateException(exc); 
    } 
    } 
    ... 
    public void actConnected() 
    { 
    Statement myStmt = cxn.createStatement(); 
    . . . 
    } 
} 

Я показал «Заявление» в качестве локальной переменной, чтобы указать, что вы не ставите «общественность» или «статический» на тех.

Смежные вопросы