我试图从两个不同的表,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);
............................................... ........
但它不会返回结果集。 我不知道我做错了什么。几天前工作得很好,但我不知道出了什么问题。提前谢谢。
答案 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块中。我编写静态方法来保持代码较小。