2017-04-19 148 views
0
public class A { 


    // method to get connection 
    ComboPooledDataSource cpDataSource = new ComboPooledDataSource(); 

    public Connection getconnection() throws Exception { 

     Connection con = null; 
     try { 
      // open a connection 
      con = cpDataSource.getConnection(); 

     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 

     return con; 
    } 


     public Class B { 


     Statement stat = null;  

     Connection con = getconnection(); 
     stat = con.createStatement(); 
     stat.execute("create table if not exists Node1(id int NOT NULL AUTO_INCREMENT, name varchar(255), ip varchar(255), port int, site varchar(255), object_referenece varchar(255), connectivity_status varchar(255))"); 
     closeConnection(con,stat); 



public void closeConnection(Connection con, Statement stat) throws 
SQLException { 
    stat.close(); 
    con.close(); 

} 
} 

我有這兩個類,B類純粹是爲了創建表。我需要從類A的getConnection方法繼續在類B中。當我使用此語法時,它要求我在此類中再次創建getconnection方法。是否有任何可能的方法從類A中獲取方法並在類B中使用它?java命令調用getconnection方法從一個類到另一個

+0

你的代碼有點亂,請檢查一下。 'B'類缺少水平。 –

回答

0

您可能想重新考慮代碼的結構。爲什麼你想要一個內部類來執行一些代碼,你可以把它放在原始類A中的一個方法中。
但是,如果因爲某種原因你仍然希望類B作爲內部類的內部類A,你想改變你的句法。

public class A { 

    ComboPooledDataSource cpDataSource = new ComboPooledDataSource(); 

    public Connection getConnection() { 
     Connection con = null; 
     try { 
      // open a connection 
      con = cpDataSource.getConnection(); 

     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 

     return con; 
    } 

    public class B { 

     public void createTable() { 
      Connection con = getConnection(); 
      try { 
       Statement stmt = con.createStatement(); 
       stmt.execute("create table if not exists Node1(id int NOT NULL AUTO_INCREMENT, name varchar(255), ip varchar(255), port int, site varchar(255), object_referenece varchar(255), connectivity_status varchar(255))"); 
      } catch(SQLException ex) { 
       ex.printStackTrace(); 
      } 
      closeConnection(con, stmt); 
     } 

    } 

} 

注意在public class B小寫,因爲你不希望定義與java.lang.Class類型的屬性。另請注意,類B中的代碼現在已包含在方法public void createTable()中,因爲您不能只在java類中的任何構造函數/方法外部存在代碼塊。
您還希望將對帳單創建執行try/catch塊。

相關問題