我上课时有一个静态方法
的makeConnection
该方法返回Connection对象以进行进一步的JDBC操作。是否有可能创建一个全局连接字段,此方法的结果是“返回”?我想在任何需要的地方使用这个字段。
public class Connection
{
public static Connection makeConnection() throws IOException, SQLException
{
try
{
Class.forName("org.postgresql.Driver");
Properties props = new Properties();
FileInputStream in = new FileInputStream("dataBase.properties");
props.load(in);
in.close();
String drivers = props.getProperty("jdbc.drivers");
if(drivers != null) System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password");
return DriverManager.getConnection(url, username,password);
}
catch (ClassNotFoundException e)
{
return null;
}
catch(IOException e)
{
return null;
}
catch(SQLException e)
{
return null;
}
}
}
答案 0 :(得分:1)
有可能,但连接工厂比连接更好。 但是,静态变量不是连接生命周期控制的好主意。
良好的连接池会为您解决许多问题,例如并发访问,超时检测,回收活动连接,自动清除死连接。
答案 1 :(得分:0)
你可以这样做:
class Foo {
public static Connection conn = bar();
private static Connection bar() {
...
}
}
这就是你想要的吗?
答案 2 :(得分:0)
这不处理连接的方式......但它可能会让您知道如何解决类似的问题:
public class Wombat
{
public static Wombat getWombat ()
{
if (theWombat == null)
theWombat = new Wombat ();
return theWombat;
}
private static Wombat theWombat= null;
}
答案 3 :(得分:0)
您可以在静态初始化程序块中初始化静态变量:
class Foo {
public static Connection conn;
static {
try {
conn = makeConnection();
} catch(...) {
...
}
}
}