resultSet的问题

时间:2013-11-10 22:29:16

标签: java mysql sql swing

我试图从两个不同的表,member_tbl和schedule_tbl中获取值,其中每个表具有相同的member_ID。现在,当我尝试检索细节。它说member_ID不存在。我的代码如下。

public int getMemberDetails(String memberid) {

    int oky = 0; 
    String memberDetails  = "SELECT * FROM member_tbl WHERE member_ID = ?";
    String scheduleDetails = "SELECT * FROM schedule_tbl WHERE member_ID = ?";

    try {
        con.connect();
        ps = con.con.prepareStatement(memberDetails);
        pc = con.con.prepareStatement(scheduleDetails);
        ps.setString(1, memberid);
        pc.setString(1, memberid);
        rs = ps.executeQuery();
        rb = pc.executeQuery();

        while (rs.next() || rb.next()) {
            uID = rs.getString("member_ID");
            jdate = rs.getString("joinDate");
            surname = rs.getString("lastname");
            mname = rs.getString("middlename");
            fname = rs.getString("MfirstName");
            dob = rs.getString("DOB");
            telephone = rs.getString("telephone");
            email= rs.getString("Memail");
            street = rs.getString("Mstreet");
            city = rs.getString("Mcity");
            state = rs.getString("Mstate");
            country = rs.getString("Mcountry");
            memtype = rs.getString("Mtype");
            mfee = rs.getString("Mtotal");
            photo = rs.getString("mphoto");
            bweight = rs.getString("body_weight");
            bfat = rs.getString("body_fat");
            bmass = rs.getString("body_mass");
            bheight = rs.getString("height");
            bpressure = rs.getString("blood_pressure");
            days = rb.getString("Days");
            hour = rb.getString("Hours");
            instruct = rb.getString("instructor");

            oky = 1;
        }
        con.con.close();

    } catch(SQLException e) {

    }
    return oky;
}

// This is where i call the method.

private void memIDsearchButtonMouseClicked(java.awt.event.MouseEvent evt) {                                               

    try {
        mids = memIDsearchField.getText();
        sqlQuerry sql = new sqlQuerry();
        int ans = sql.getMemberDetails(mids);

        if (ans == 1 )
        {
            idfield.setText(sql.uID);
            jdatefield.setText(sql.jdate);
            surnamefield.setText(sql.surname);
            middlenamefield.setText(sql.mname);
            firstnamefield.setText(sql.fname);
            dobfield.setText(sql.dob);
            phonefield.setText(sql.telephone);

............................................... ........

但它不会返回结果集。 我不知道我做错了什么。几天前工作得很好,但我不知道出了什么问题。提前谢谢。

2 个答案:

答案 0 :(得分:3)

while(rs.next() || rb.next()) {
    uID = rs.getString("member_ID");

这没有意义。如果rs中没有任何内容,但rb已满了行,您仍会尝试从rs获取值。

您必须执行查询,从结果集中读取所有内容,然后执行第二个查询,并从结果集中读取所有内容。

此外:

catch(SQLException e)
{

}

你永远不应该这样做。如果存在SQLException,您将永远不会意识到它,因为您捕获它并忽略它。抛出异常表示问题。隐藏异常不会解决问题。

答案 1 :(得分:0)

我不明白为什么你没有加入:

select *
from member_tbl as m
join schedule_tbl as s
on m.member_ID = s.member_ID

我将第二个“没有空的拦截块”。

我建议您按名称拼出所需的列,即使它们全部都是。 (没有明星符号。)

您根本没有关闭结果集或语句,也没有正确关闭连接。所有应该在finally块中关闭,包含在单独的try / catch块中。我编写静态方法来保持代码较小。