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

我展示了「聲明」作爲一個局部變量指出的是,你不把「公」或「靜態」的那些。