Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java命令从一个类调用getconnection方法到另一个类_Java_Database_H2 - Fatal编程技术网

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

java命令从一个类调用getconnection方法到另一个类,java,database,h2,Java,Database,H2,我有这两个类,B类纯粹用于创建表。我需要从类A中获取连接方法才能在类B中继续。当我使用此语法时,它要求我在此类中再次创建getConnection方法。有没有可能从类A中获取方法并在类B中使用它???您可能需要重新考虑代码的结构。为什么您希望内部类执行一些代码,而这些代码可以放在原始类a的方法中。 但是,如果出于任何原因,您仍然希望类B作为CalsSA中的内部类,那么您需要更改语法 public class A { // method to get connection C

我有这两个类,B类纯粹用于创建表。我需要从类A中获取连接方法才能在类B中继续。当我使用此语法时,它要求我在此类中再次创建getConnection方法。有没有可能从类A中获取方法并在类B中使用它???

您可能需要重新考虑代码的结构。为什么您希望内部类执行一些代码,而这些代码可以放在原始类a的方法中。
但是,如果出于任何原因,您仍然希望类B作为CalsSA中的内部类,那么您需要更改语法

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

 }
 }
请注意
public class B
中的小写class,因为您不想定义类型为
java.lang.class
的属性。还要注意,类B中的代码现在被包装在方法
public void createTable()
中,因为java类中的任何构造函数/方法外都不能有代码块。

您还需要将语句创建执行放在try/catch块中。

您的代码有点凌乱,请查看。类
B
缺少smth。
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);
        }

    }

}