【问题标题】:Calling my connection method within another method在另一个方法中调用我的连接方法
【发布时间】:2016-01-14 20:10:24
【问题描述】:

如何调用我的连接方法并将该方法中的变量用于其他方法。请考虑以下内容:

public final class AnApplication extends javax.swing.JFrame { 

    public AnApplication {

    // Stuff

    }
    public Connection connectDB() {

        Connection conn = null;
        String url = "jdbc:mysql://localhost:3306/car_rental";
        String driver = "com.mysql.jdbc.Driver";
        String user = "username";
        String pass = "password";

        try {
            Class.forName(driver);
            conn = (Connection) DriverManager.getConnection(url, user, pass);
            if (conn == null) {
                System.out.println("Connection cannot be established");
            }       
        } catch (Exception e) {
            System.out.println(e);
        }
        return conn;
    }  

}
}

public void someQuery() {
    connectDB();
    try
    {

        // Insert Statement with ? Placeholders
        conn = DriverManager.getConnection(url, username, password);
        System.out.print("Connected Successfully\n");

        String query = "CREATE TABLE IF NOT EXISTS `tableName`";


        PreparedStatement preparedStmt = conn.prepareStatement(Query);

        //Execute the Prepared Statement/Query
        preparedStmt.execute();

        System.out.print("Tables inserted successfully");
    }

    catch (Exception e)
    {   
        System.err.println("Got an exception!");
        System.err.println(e.getMessage());
    }   
}

通过在下面的方法中调用下面的 connectDB(),我仍然无法访问创建的 someQuery 方法中的变量。我如何能够创建方法并在调用时使其在方法中可访问,而不必一遍又一遍地编写连接字符串。抱歉,如果这可能是一个愚蠢的问题,我对 Java 和 OOP 的概念还是很陌生。

【问题讨论】:

  • 为什么你的变量对你的方法来说是本地的,而不是你的类的私有(和最终)成员?
  • Connection conn = connectDB();
  • 所以我的变量应该直接属于类,而不是我创建的方法,因此它们可以在整个过程中访问?当我尝试这样做时,它确实工作正常,但我不确定是否有适当和更好的方法
  • 我认为您的代码中存在复制和粘贴错误。您有一个额外的大括号,并且 someQuery() 似乎不在一个类中。请确保您的代码在您的问题中正确提交。
  • 对不起,只是在那里做了。即使使用 Connection conn = connect();在 someQuery 方法中,url、username 和 password 变量仍然没有访问权限。我是否需要更改变量的修饰符?

标签: java class methods


【解决方案1】:

您想重用您在 connectDB() 中定义的相同代码。

public void someQuery() {
    try
    {

// Insert Statement with ? Placeholders
Connection conn = connectDB();
...

如果这是一个重要的应用程序,您还需要考虑池化您的连接,而不是每次都关闭并重新打开。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    相关资源
    最近更新 更多