我目前正在使用JavaFX中的SQL构建程序。
我正在主窗口中呼叫DbConnect()
,一切正常。
我现在遇到的问题是在其他类(另一个窗口/场景)中获得此数据库连接。现在,我正在所有其他场景中调用数据库连接功能,这将在以后引起问题,因为它总是打开一个新的数据库连接。因此,我的问题是如何在所有类中共享数据库连接。
只希望在主类中将其打开一次,然后将其继承给其他类
这是我的数据库连接功能:
public Connection DbConnect() {
try {
con = DriverManager.getConnection(dbPath, user, pass);
statm = con.createStatement();
SetupSystem();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
从第一个窗口
// Initilizing all the database connections
public void DbConnect() {
con.DbConnect();
disconnectMenuItem.setVisible(true);
connectMenuItem.setVisible(false);
}
从第二个窗口(不想在这里打开新连接)要继承第一个窗口的连接
public void initialize(URL location, ResourceBundle resources) {
db.DbConnect();
}
预先感谢
答案 0 :(得分:0)
您可以使用Singleton pattern来通过您的课程共享一个实例:
public final class Singleton {
private static volatile Connection con = null;
private Singleton() {}
public static Singleton getInstance() {
if (con== null) {
try {
con = DriverManager.getConnection(dbPath, user, pass);
statm = con.createStatement();
SetupSystem();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return con;
}
}
现在,您可以从像这样的其他类访问数据库连接:
public class ClassOne {
Singleton.getInstance();
}
public class ClassTwo {
Singleton.getInstance();
}