Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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 当我只能访问对象的一个字段时,如何返回该对象?_Java_Sql_Jdbc - Fatal编程技术网

Java 当我只能访问对象的一个字段时,如何返回该对象?

Java 当我只能访问对象的一个字段时,如何返回该对象?,java,sql,jdbc,Java,Sql,Jdbc,对不起,如果这不合理,我想不出更好的表达方式。希望我的代码能更好地说明我的问题 所以在这个方法中,我想返回一个Myuser对象。Myuser对象大约有8个字符串字段,其中一个是userId 如您所见,当调用此方法时,会传入一个字符串。如果这个字符串的值与Myuser对象中的userId字段的值相同,那么我希望它返回完整的Myuser对象。否则返回null public Myuser getRecord(String userId) { Connection cnnct = null;

对不起,如果这不合理,我想不出更好的表达方式。希望我的代码能更好地说明我的问题

所以在这个方法中,我想返回一个Myuser对象。Myuser对象大约有8个字符串字段,其中一个是userId

如您所见,当调用此方法时,会传入一个字符串。如果这个字符串的值与Myuser对象中的userId字段的值相同,那么我希望它返回完整的Myuser对象。否则返回null

public Myuser getRecord(String userId) {
    Connection cnnct = null;
    PreparedStatement pStmnt = null;
    Myuser myusr = null;
    boolean result = false;

    try {
        cnnct = getConnection();
        String preQueryStatement = "SELECT * FROM MYUSER WHERE USERID = ?";
        pStmnt = cnnct.prepareStatement(preQueryStatement);

        pStmnt.setString(1, userId);

        ResultSet rslt = pStmnt.executeQuery();

        result = rslt.next();

        if (result) {
            //return myusr in its entirety
        }

     } catch (SQLException ex) {
        while (ex != null) {
            ex.printStackTrace();
            ex = ex.getNextException();
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (pStmnt != null) {
            try {
                pStmnt.close();
            } catch (SQLException e) {
            }
        }
        if (cnnct != null) {
            try {
                cnnct.close();
            } catch (SQLException sqlEx) {
            }
        }
    }

    return myusr;
}
编辑:我想我也会发布Myuser类

public class Myuser {

    private String userid;
    private String name;
    private String password;
    private String email;
    private String phone;
    private String address;
    private String secQn;
    private String secAns;

    public Myuser(String userid, String name, String password, String email, String phone, String address, String secQn, String secAns) {
        this.userid = userid;
        this.name = name;
        this.password = password;
        this.email = email;
        this.phone = phone;
        this.address = address;
        this.secQn = secQn;
        this.secAns = secAns;
    }

    public String getUserid() {
        return userid;
    }

    public void setUserid(String userid) {
        this.userid = userid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getSecQn() {
        return secQn;
    }

    public void setSecQn(String secQn) {
        this.secQn = secQn;
    }

    public String getSecAns() {
        return secAns;
    }

    public void setSecAns(String secAns) {
        this.secAns = secAns;
    }
}

您可以轻松地使用
result.getXXX(字段名称)

注意不需要使用
result=rslt.next()
之前,如果(结果)
,则必须直接使用

if (rslt.next()) {
   ...
}

您可以轻松地使用
result.getXXX(字段名称)

注意不需要使用
result=rslt.next()
之前,如果(结果)
,则必须直接使用

if (rslt.next()) {
   ...
}

如果你只使用一个普通的jdbc连接器,我坚信你会这样做,你必须从结果中获取信息,用这些特定的信息创建一个新的Myuser对象如果你只使用一个普通的jdbc连接器,我坚信你会这样做,您必须从结果中获取信息,才能使用该特定信息创建一个新的Myuser对象