我想实现类似segmentfault关注问题的功能,从数据库中循环输出活动表的内容,在输出的时候遍历另一张用户活动表,这张表存着用户参加过哪些活动。如果参加过,就显示已参加,否则显示未参加。
遇到的问题:在循环显示出的活动中,用户按从上到下的顺序点击参加活动,能正常工作,但是用户随机点击参加活动,就显示不出已参加的样式,我的程序有什么问题,请大家帮忙看看,该如何解决。
java.sql.Connection conn = null;
java.lang.String strConn;
java.sql.Statement sqlStmt = null;
java.sql.ResultSet sqlRst = null;
java.sql.ResultSet sqlatt = null;
try {
conn = java.sql.DriverManager.getConnection("jdbc:mysql://localhost/yueba", "root", "123456");
sqlStmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);
String sqlQuery = "select * from activity order by ID DESC";
sqlRst = sqlStmt.executeQuery(sqlQuery);
sqlStmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE, java.sql.ResultSet.CONCUR_READ_ONLY);
String queryatt = "select activity.*,attend.* from activity,attend where activity.ID=attend.actid order by activity.ID desc";
sqlatt = sqlStmt.executeQuery(queryatt);
while (sqlRst.next()) {
int flag=0;
String dbpubuser = sqlRst.getString("pubuser");
String dbtitle = sqlRst.getString("title");
String dbdetail = sqlRst.getString("detail");
int dbid = sqlRst.getInt("ID");
Timestamp subtime = sqlRst.getTimestamp("datetime");
while (sqlatt.next()) {
String dbattuser=sqlatt.getString("attuser");
int dbactid = sqlatt.getInt("actid");
if ((dbid == dbactid)&&(username.equals(dbattuser))) {
%>
已参加
flag=1;
break;
}
}
if(flag==0){
%>
参加活动
}
} catch (java.sql.SQLException e) {
out.println(e.toString());
} finally {
if ((sqlRst != null) && (sqlatt != null)) {
try {
sqlRst.close();
sqlatt.close();
} catch (java.sql.SQLException el) {
out.println(el.toString());
} finally {
try {
if (sqlStmt != null) {
sqlStmt.close();
}
} catch (java.sql.SQLException e2) {
out.println(e2.toString());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (java.sql.SQLException e3) {
out.println(e3.toString());
}
}
}
}
}
%>
这是未参加时:![图片描述][1]
这是参加活动后:![图片描述][2]