2015-12-03 5 views
1

Я новичок в java, и мне нужно ваше руководство по подключению в Java к Oracle DB. Так что я делаю java fx сейчас, и я использую MVC для своей программы. Таким образом, эти 3 класса, которые связаны,Использование соединения, которое установлено в другом файле

Util/ConnectionDB.java

public class ConnectionDB { 

    private static final String DB_USER = "WELTESADMIN"; 
    private static final String DB_PASS = "123pass"; 
    private static final String DB_NAME = "WEN"; 
    private static Connection conn = null; 

    public boolean openConnection(){ 
     boolean result; 

     try { 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.100.195:1521:"+DB_NAME+"",DB_USER,DB_PASS); 
      if (conn != null){ 
       System.out.println("CONNECTION DONE"); 
      } 
      result = true; 
     } catch (Exception e) { 
      e.printStackTrace(); 
      result = false; 
     } 
     return result; 
    } 
} 

Контроллер/Main.java

public class Main extends Application { 

    @Override 
    public void start(Stage primaryStage) throws Exception{ 
     Parent root = FXMLLoader.load(getClass().getResource("../View/login.fxml")); 
     primaryStage.setTitle("Weltes Oxygen Management"); 
     primaryStage.setScene(new Scene(root)); 
     primaryStage.show(); 
     testConnection(); 
    } 

    public void testConnection(){ 
     ConnectionDB connect = new ConnectionDB(); 
     connect.openConnection(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 
} 

Контроллер/LoginController.java

public class LoginController { 

    @FXML private TextField username; 
    @FXML private PasswordField password; 
    @FXML private Button loginButton; 
    @FXML private Label labelStatus; 

    @FXML private void handleLoginButton() throws InterruptedException { 
      Thread.sleep(1000); 
     labelStatus.setText("Connected..."); 

     ConnectionDB conn = new ConnectionDB(); 

    } 

} 

Так Мне нужно использовать эту переменную conn для создания подготовленного оператора. Как использовать соединение на протяжении всего сеанса программы?

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

ответ

1

Самый простой подход можно сделать ConnectionDB синглтон:

public class ConnectionDB { 

    private static ConnectionDB instance; 

    public static ConnectionDB getInstance(){ 
     if(instance == null) { 
      instance = new ConnectionDB(); 
      Class.forName("oracle.jdbc.driver.OracleDriver"); 
      instance.conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.100.195:1521:"+DB_NAME+"",DB_USER,DB_PASS); 
      //...... try-catch or do your stuff 
     } 
     return instance; 
    } 

    private ConnectionDB(){}; 

    private Connection conn; 
    public Connection getConnection(){ 
     return conn; 
    } 
} 

Затем, когда вам нужно DB подключение, просто позвоните:

ConnectionDB.getInstance().getConnection(); 
Смежные вопросы