我想将连接变量myConn传递给其他几个类。但是,当我

return myConn;


myConn无法解析为变量。这是代码:

import java.sql.*;
import javafx.application.Application;

public class MP {

    public static void main(String[] args) {

        try {

            Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xyz);

        }
        catch (Exception exc) {
            exc.printStackTrace();
        }

        Application.launch(MPfxlogin.class, args);
    }

    public Connection getConn() {

        return myConn;
    }
}


我必须尝试通过使方法变为静态并添加静态变量来解决该问题:

import java.sql.*;
import javafx.application.Application;

public class MP {

    static Connection myConn;

    public static void main(String[] args) {

        try {

            Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xyz);

        }
        catch (Exception exc) {
            exc.printStackTrace();
        }

        Application.launch(MPfxlogin.class, args);
    }

    public static Connection getConn() {

        return myConn;
    }
}


现在,程序运行了,但是静态变量保持为空,因此保持不变

Connection myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xyz);


省略try-block并使用时会发生相同的问题

public static void main(String[] args) throws SQLException {


我怎样才能解决这个问题?帮助将不胜感激!

最佳答案

变量myConn遮盖了静态变量myConn。因此,您正在做的是-正在初始化一个名为myConn的局部变量,而不是类变量。

只需删除(重新)在main中声明的部分。

try {
    //Initializes the static variable myConn
    myConn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xyz);
}

10-08 20:22