Как я могу поделиться объектом подключения SQL через классы? - PullRequest
0 голосов
/ 24 ноября 2018

В настоящее время я создаю программу с SQL на JavaFX.

Я звоню 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();
}

заранее спасибо,

1 Ответ

0 голосов
/ 24 ноября 2018

Вы можете использовать шаблон Singleton , который может совместно использовать один экземпляр через ваши классы:

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();
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...