我有一个如下所示的单例类,用于访问数据库连接
public class DBConnection {
private static volatile DBConnection instance;
private static DataSource dataSource;
private DBConnection(){
}
public static synchronized DBConnection getInstance() {
if (instance == null) {
instance = new DBConnection();
}
return instance;
}
static {
try {
dataSource = (DataSource) new InitialContext()
.lookup("java:comp/env/jdbc/MySQLDataSource");
} catch (NamingException e) {
e.printStackTrace();
try {
throw new Exception("'jndifordbconc' not found in JNDI", e);
} catch (Exception e1) {
logger.error("Error description", e);
}
}
}
public static Connection getDBConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error description", e);
return null;
}
}
}
当我尝试以这种方式访问 DBConnection
独立类
我收到黄色警告
public String fetchGlobalIndicesData(@QueryParam("region_name") String region_name )
{
Connection dbConnection = null;
String selectsql = "";
try
{
dbConnection = DBConnection.getInstance().getDBConnection();
selectpstmt = dbConnection.prepareStatement(selectsql);
selectpstmt.setString(1, region_name);
selectRset = selectpstmt.executeQuery();
}
catch (Exception e)
{
logger.error("Error description",e);
}
}
Eclipse IDE 向我发出黄色警告
The static method getDBConnection() from the type DBConnection should be accessed in a static way
你能告诉我这样做的正确方法是什么吗?
我将代码修改为
public static Connection getDBConnection() {
try {
return getInstance().dataSource.getConnection();
} catch (SQLException e) {
e.printStackTrace();
logger.error("Error description", e);
return null;
}
}
最佳答案
由于它是静态的,因此您应该直接在类上调用该方法,而不是在类的实例上调用:
DBConnection.getDBConnection()
尽管有可能,但在实例上调用该方法没有任何意义。
关于java - 应以静态方式访问 DBConnection 类型的静态方法 getDBConnection(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016414/