我想使用子查询访问表中的数据。 表1包含表2的外键,这意味着我可以使用该键访问表2中的数据。 我的问题是我从下面显示的方法返回数组列表后,ArrayList为null。使用子查询
这是我做了什么:
LogEntry logBookDates;
List<LogEntry> bookList =new ArrayList();
try{
PreparedStatement getSummaryStmt=con.prepareStatement("SELECT * FROM LOGENTRYTABLE WHERE DIARYCODE =(SELECT Diarycode FROM LOGBOOKTABLE WHERE STUDENTUSERNAME=? OR SUPERVISORUSERNAME=? AND PROJECT_APPROVE_STATUS=?)");
//the above statment is the sub query which i have created, i get the diary code from log book table and then access the log entry table.
getSummaryStmt.setString(1,userName);
getSummaryStmt.setString(2,userName);
getSummaryStmt.setString(3,"Accepted");
ResultSet rs=getSummaryStmt.executeQuery();
while(rs.next())
{
logBookDates=new LogEntry(rs.getString("STUDENTUSERNAME"),rs.getString("SupervisorUsername"),rs.getString("projecttitle"),rs.getString("projectDescription"),rs.getDate("startDate"),rs.getDate("enddate"),rs.getString("project_approve_status"),rs.getString("diarycode"),rs.getString("projectcode"),rs.getInt("Index"),rs.getString("log_Entry"),rs.getDate("logentry_date"),rs.getString("supervisor_comment"),rs.getString("project_progress"));
bookList.add(logBookDates);
}
}catch(Exception e){}
return bookList;
}
我没有使用子查询之前,这是第一次使用它们我。 这里似乎是什么问题?
谢谢你的时间。
编辑:logentry表的日志表的样本数据
样本数据
预期输出:
我没有这方面的一个屏幕截图,但我需要的是只是为了遍历从上述方法返回的ArrayList。
您可以发布该表与一些样本数据并提供预期的输出? –
你是什么意思'我得到空'?是否您遇到LogBookEntry表中某列的空值?当查询没有返回任何结果时,结果集“rs”永远不会为空 - 它是空的 - 这意味着rs.next()将返回false。 –
通过使用'SELECT Diarycode FROM LOGBOOKTABLE WHERE STUDENTUSERNAME =? OR SUPERVISORUSERNAME =? AND PROJECT_APPROVE_STATUS =?)',你能得到'Diarycode'吗? –