java命令从一个类调用getconnection方法到另一个类

Posted

技术标签:

【中文标题】java命令从一个类调用getconnection方法到另一个类【英文标题】:java command to call a getconnection method from one class to another 【发布时间】:2017-04-19 14:12:53 【问题描述】:
 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 类中使用?

【问题讨论】:

您的代码有点乱,请检查一下。类B 不见了。 【参考方案1】:

您可能需要重新考虑代码的结构。为什么您希望内部类执行一些您可以放在原始类 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 的小写class,因为您不想定义java.lang.Class 类型的属性。另请注意,B 类中的代码现在包含在方法 public void createTable() 中,因为您不能只在 java 类中的任何构造函数/方法之外有代码块。 您还想将 Statement creationexecution 放在 try/catch 块中。

【讨论】:

以上是关于java命令从一个类调用getconnection方法到另一个类的主要内容,如果未能解决你的问题,请参考以下文章

Driver.getConnection 使用 SQLServer 驱动程序和 Java 1.6.0_29 挂起

java的get和set方法

java的get和set方法

Java通过接口或者抽象类调用方法的时候,怎么知道调用的是哪个实现类里的方法?

用java调用oracle存储过程总结(转)

无法通过 Java 执行 Snowflake COPY 命令