我正在尝试设置一个可以从任意数量的其他 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/