java - 使用在另一个文件中建立的连接

标签 java sql oracle javafx

我是 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;
    }
}

Controller /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);
    }
}

Controller /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 变量来建立准备好的语句。如何在程序的整个 session 期间使用连接?

提前非常感谢

最佳答案

最简单的方法是您可以使 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;
    }
}

然后,每当您需要数据库连接时,只需调用:

ConnectionDB.getInstance().getConnection();

关于java - 使用在另一个文件中建立的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34062308/

相关文章:

java - 只有静态方法的类应该是抽象的吗?

java - 将 Java 项目直接放在源代码存储库下是最佳做法吗

sql - PostgreSQL 中的单引号和双引号有什么区别?

mysql - 如何结合 left join 和 where join(旧式逗号连接)?

oracle - PL/SQL 的代码覆盖率

java - 关闭点击不起作用

java - 向正则表达式添加长度约束

sql - Upsert 查询不适用于空值。如何在约束中使用空值更新?

SQL - 如何存储和导航层次结构?

c# - 在 ASP.NET 项目中将数据类型从 Oracle 转换为 SQL Server