Java MVC数据库控制器类

Java MVC数据库控制器类,java,model-view-controller,jdbc,static,Java,Model View Controller,Jdbc,Static,我正在尝试设置一个数据库控制器类,该类可以从任何数量的其他控制器类引用。我得到的非静态方法无法从静态上下文引用错误。我不明白为什么,因为我的两个类都是非静态的。但我在想也许连接类是静态的 这是我的连接控制器: package Controllers; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; impo

我正在尝试设置一个数据库控制器类,该类可以从任何数量的其他控制器类引用。我得到的
非静态方法无法从静态上下文引用
错误。我不明白为什么,因为我的两个类都是非静态的。但我在想也许连接类是静态的

这是我的连接控制器:

package Controllers;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DBConnectionController {

private Connection conn;

public Connection getConnectionPPDB(int DatabaseCode) {
    Properties props = new Properties();
    FileInputStream fis = null;
    try {
        fis = new FileInputStream("config.properties");
        props.load(fis);
        Class.forName(props.getProperty(DatabaseCode + "DB_DRIVER_CLASS"));
        conn = DriverManager.getConnection(props.getProperty(DatabaseCode + "AGDB_URL"),
                props.getProperty(DatabaseCode + "DB_USERNAME"),
                props.getProperty(DatabaseCode + "DB_PASSWORD"));
    } catch (IOException | ClassNotFoundException | SQLException e) {
        java.util.logging.Logger.getLogger(AppViewController.class.getName()).log(java.util.logging.Level.SEVERE, null, e);
    }
    return conn;
}
所以我想做的是从另一个控制器调用此连接,例如:

public ListModel getTemplateCustomers() {
    try {
        DBConnectionController.getConnectionPPDB(VM_ID);
        try {
            //will be filled with a query and rs
            }
        } finally {
            conn.close();
        }
    } catch (Exception e) {
        return null;
    }
}
此类使用整数调用连接并返回连接。但问题是非静态误差。有人能解释一下为什么我的连接控制器是静态的吗

DBConnectionController.getConnectionPPDB(VM_ID);
尝试调用类
DBConnectionController
中的静态方法
getConnectionPPDB
,但它不是静态的

因此,您可以:

  • 创建
    DBConnectionController
    的实例,并对该实例调用
    getConnectionPPDB
  • 使
    static
    成为
    getConnectionPPDB
    方法
    • 这一行

      DBConnectionController.getConnectionPPDB(VM_ID);
      
      尝试调用类
      DBConnectionController
      中的静态方法
      getConnectionPPDB
      ,但它不是静态的

      因此,您可以:

      • 创建
        DBConnectionController
        的实例,并对该实例调用
        getConnectionPPDB
      • 使
        static
        成为
        getConnectionPPDB
        方法

      getConnectionPPDB方法在哪里?@Berger被编辑以匹配描述的函数。好的,那么您在下面有一个答案:)getConnectionPPDB方法在哪里?@Berger被编辑以匹配描述的函数。好的,那么您在下面有一个答案:)