2016-03-03 58 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

连接通常不能重复使用 - 您使用它们一段时间,然后关闭它们并扔掉参考。要在多个方法中使“连接”引用可见,您可以使其成为一个成员变量,并将其初始化为恰当的“初始化程序”。查找分别用于初始化类和实例成员变量的“静态初始化程序”(有时被称为“静态块”)和“构造函数”。

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

我展示了“声明”作为一个局部变量指出的是,你不把“公”或“静态”的那些。