Java MVC 数据库 Controller 类

标签 java model-view-controller jdbc static

我正在尝试设置一个可以从任意数量的其他 Controller 类引用的数据库 Controller 类。我收到无法从静态上下文引用非静态方法错误。我不明白为什么,因为我的两个类都是非静态的。但我在想连接类可能是静态的?

这是我的连接 Controller :

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;
}

所以我想做的是从另一个 Controller 调用此连接,如下所示:

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;
    }
}

此类使用整数调用连接并返回连接。但问题是非静态错误。有人可以解释为什么我的连接 Controller 是静态的吗?

最佳答案

DBConnectionController.getConnectionPPDB(VM_ID);

尝试调用DBConnectionController类中的静态方法getConnectionPPDB,但它不是静态

所以你可以:

  • 创建 DBConnectionController 实例并在该实例上调用 getConnectionPPDB
  • getConnectionPPDB 方法设置为静态

关于Java MVC 数据库 Controller 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35018414/

相关文章:

java - 为什么(正如java文档所说)我们不能从PreparedStatement或CallableStatement调用Statement接口(interface)中的执行方法?

Java - MySQL - 连接到 MySQL 数据库时出错

java - 修饰符 static 只允许在常量变量声明中

java - 带有可迭代的 Spring 数据 findAllBy 返回空数组

javascript - MVC Javascript 错误

javascript - rivets.js:使用 init View 中的数据预填充模型

java - 检查数据库中的用户是否被禁止 JDBC

java - 如何使用带日期的用户参数在 Java 中编写 MySQL 查询

java - MySQL 和 Java 中的多线程编程

php - PHP 中的代码优先 Entity Framework 模型