Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从构造函数(Java、MySQL)设置具有类作用域的变量时出现问题_Java_Mysql_Variables_Constructor_Scope - Fatal编程技术网

从构造函数(Java、MySQL)设置具有类作用域的变量时出现问题

从构造函数(Java、MySQL)设置具有类作用域的变量时出现问题,java,mysql,variables,constructor,scope,Java,Mysql,Variables,Constructor,Scope,我试图用构造函数设置一个具有类作用域的变量,每当我从构造函数中打印出来时,该变量被设置为正确的值,但每当我试图在同一类中的另一个方法中使用该变量时,该值为null。如何在构造函数外部正确使用firstNameTest变量 这是构造函数和调用方法: public class Member extends javax.swing.JFrame { DefaultTableModel rentalsTableModel; String customerID; String firstNameTe

我试图用构造函数设置一个具有类作用域的变量,每当我从构造函数中打印出来时,该变量被设置为正确的值,但每当我试图在同一类中的另一个方法中使用该变量时,该值为null。如何在构造函数外部正确使用firstNameTest变量

这是构造函数和调用方法:

public class Member extends javax.swing.JFrame {



DefaultTableModel rentalsTableModel;
String customerID;
String firstNameTest; //Variable declared with class scope.


public Member() {

    initComponents();
    rentalsTableModel = (DefaultTableModel)tblRentals.getModel();
}

Member(String firstName, String lastName, String phoneNumber, String email, String over18, String dateJoined, String dateExpired, String fines) throws SQLException {

    System.out.println(firstName); // Successfully prints value.
    firstNameTest = firstName;
    System.out.println(firstNameTest); // Successfully prints value.
}

...                                       

private void btnChangeCustomerActionPerformed(java.awt.event.ActionEvent evt) {                                                  

    customerID = JOptionPane.showInputDialog(null, "Enter Customer ID.");

    MemberDAO member = new MemberDAO();
    try {

        List membersDetails = member.getMembersDetails(customerID);
        System.out.println(firstNameTest); // Value is null.
        txtFullName.setText(firstNameTest);

    } catch (SQLException ex) {

        System.err.println(ex);
        System.out.println("Failed to get Details.");
        JOptionPane.showMessageDialog(null, "Failed to retrieve data.");
    }
} 
调用的方法:

public List<Member> getMembersDetails(String ID) throws SQLException{

    List<Member> membersDetails = new ArrayList();

    String getMembershipDetails = "SELECT first_name, last_name, phone_number, email, over_18, date_joined, date_expire, fines FROM members"
            + " WHERE member_id = " + ID + ";";

    try {
        DBConnection mc = new DBConnection();
        dbConnection = mc.getConnection();
        statement = dbConnection.createStatement();

        ResultSet rs = statement.executeQuery(getMembershipDetails);

        while(rs.next()){
            String firstName = rs.getString("first_name");
            String lastName = rs.getString("last_name");
            String phoneNumber = rs.getString("phone_number");
            String email = rs.getString("email");
            String over18 = rs.getString("over_18");
            String dateJoined = rs.getString("date_joined");
            String dateExpired = rs.getString("date_expire");
            String fines = rs.getString("fines");

            System.out.println(firstName);
            System.out.println(dateExpired);

            Member m;
            m = new Member(firstName, lastName, phoneNumber, email, over18, dateJoined, dateExpired, fines);
            membersDetails.add(m);

            System.out.println(membersDetails.get(0));
        }    

    }  catch (SQLException ex){
        System.err.println(ex);
        System.out.println("Failed to get Membership Details.");
        return null;
    } finally{
        if (ps != null){
            ps.close();
        }
        if (dbConnection != null){
            dbConnection.close();
        }
    } return membersDetails;
}
公共列表getMembersDetails(字符串ID)抛出SQLException{ List membersDetails=新建ArrayList(); String getMembershipDetails=“选择名字、姓氏、电话号码、电子邮件、18岁以上、加入日期、过期日期、会员罚款” +“WHERE member_id=“+id+”;”; 试一试{ DBConnection mc=新的DBConnection(); dbConnection=mc.getConnection(); statement=dbConnection.createStatement(); ResultSet rs=statement.executeQuery(getMembershipDetails); while(rs.next()){ String firstName=rs.getString(“first_name”); String lastName=rs.getString(“last_name”); String phoneNumber=rs.getString(“电话号码”); String email=rs.getString(“电子邮件”); String over18=rs.getString(“over_18”); String dateJoined=rs.getString(“date_joined”); String dateExpired=rs.getString(“date_expired”); 字符串罚款=rs.getString(“罚款”); System.out.println(名字); System.out.println(过期日期); m委员; m=新会员(名字、姓氏、电话号码、电子邮件、年满18岁、已加入日期、已过期日期、罚款); 成员详细信息。添加(m); System.out.println(membersDetails.get(0)); } }catch(SQLException-ex){ 系统错误打印项次(ex); System.out.println(“未能获取成员详细信息”); 返回null; }最后{ 如果(ps!=null){ ps.close(); } if(dbConnection!=null){ dbConnection.close(); } }返回成员详细信息; } 更改此行-

System.out.println(firstNameTest); // Value is null.


这里有很多代码,但只有部分代码是相关的-为什么需要这么多属性来演示这个问题?为什么需要一个数据库来演示这个问题?此外,您还没有真正展示您编写的代码的功能。如果没有一个简短但完整的程序来清楚地演示问题,很难帮助您。这似乎缺少一些重要的代码。您有两个构造函数,一个是public no arg,另一个是带参数的包,但是带参数的构造函数既没有链也没有调用类似
initComponents()
的东西。哪里会得到null?我为所有代码道歉,我在筛选和编辑它时遇到问题。Ninad我在btnChangeCustomerActionPerformed中得到null(…在这一行:System.out.println(firstNameTest);//值为null.Ty,用于建议,但当我尝试此操作时,IDE说它找不到符号,有什么想法吗?找不到哪个符号-membersDetails?get(0)之后的firstNameTest。您是一个图例。感谢heaps.+1
System.out.println(((Member)membersDetails.get(0)).firstNameTest); // Value is null.