0

我试图从 2 个不同的表 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);

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

但它一直没有返回任何结果集。我不知道我是否做错了什么。几天前它工作得很好,但我不知道出了什么问题。提前致谢。

4

2 回答 2

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

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

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

还:

catch(SQLException e)
{

}

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

于 2013-11-10T22:32:50.457 回答
0

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

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

我会第二个“没有空的捕获块”。

我建议您按名称拼出您想要的列,即使是所有列。(没有星号。)

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

于 2013-11-10T23:10:48.753 回答