public class ArticleJdbc { public List getArticle(int sort_id){
List list=new ArrayList();
Jdbc jdbc=new Jdbc();
Article article=new Article();
String sql="select * from article where sort_id='"+sort_id+"'";
ResultSet rs=jdbc.Query(sql);
try {
while(rs.next()){
article.setArticle_id(rs.getInt(1));
article.setArticle_title(rs.getString(2));
article.setArticle_content(rs.getString(3));
article.setArticle_time(rs.getString(4));
article.setUser_id(rs.getInt(5));
article.setSort_id(rs.getInt(6));
list.add(article);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.closers();
jdbc.closestmt();
jdbc.closeconn();
return list;
}
}
}这样一个类 然后在jsp页面中取list中的所有article的值
<% ArticleJdbc aj = new ArticleJdbc();
String id = request.getParameter("sort_id");
int sort_id=Integer.parseInt(id);
List list = aj.getArticle(sort_id);
for(int i=0;i<list.size();i++){
Article article=(Article)list.get(i);
%>
<%=article.getTitle()%>
<% } %>
为什么只重复显示最后一条查找到的数据的值
List list=new ArrayList();
Jdbc jdbc=new Jdbc();
Article article=new Article();
String sql="select * from article where sort_id='"+sort_id+"'";
ResultSet rs=jdbc.Query(sql);
try {
while(rs.next()){
article.setArticle_id(rs.getInt(1));
article.setArticle_title(rs.getString(2));
article.setArticle_content(rs.getString(3));
article.setArticle_time(rs.getString(4));
article.setUser_id(rs.getInt(5));
article.setSort_id(rs.getInt(6));
list.add(article);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.closers();
jdbc.closestmt();
jdbc.closeconn();
return list;
}
}
}这样一个类 然后在jsp页面中取list中的所有article的值
<% ArticleJdbc aj = new ArticleJdbc();
String id = request.getParameter("sort_id");
int sort_id=Integer.parseInt(id);
List list = aj.getArticle(sort_id);
for(int i=0;i<list.size();i++){
Article article=(Article)list.get(i);
%>
<%=article.getTitle()%>
<% } %>
为什么只重复显示最后一条查找到的数据的值
while(rs.next()){ Article article=new Article(); article.setArticle_id(rs.getInt(1));
article.setArticle_title(rs.getString(2));
article.setArticle_content(rs.getString(3));
article.setArticle_time(rs.getString(4));
article.setUser_id(rs.getInt(5));
article.setSort_id(rs.getInt(6));
list.add(article);
}
try {
while(rs.next()){
article = new Article();
article.setArticle_id(rs.getInt(1));
……………………
放到循环里面去
public class ArticleJdbc { public List getArticle(int sort_id){
List list=new ArrayList();
Jdbc jdbc=new Jdbc();
Article article=null;
String sql="select * from article where sort_id='"+sort_id+"'";
ResultSet rs=jdbc.Query(sql);
try {
while(rs.next()){
article = new Article();
article.setArticle_id(rs.getInt(1));
article.setArticle_title(rs.getString(2));
article.setArticle_content(rs.getString(3));
article.setArticle_time(rs.getString(4));
article.setUser_id(rs.getInt(5));
article.setSort_id(rs.getInt(6));
list.add(article);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.closers();
jdbc.closestmt();
jdbc.closeconn();
return list;
}
}
}
List list=new ArrayList();
Jdbc jdbc=new Jdbc();
Article article=null;
String sql="select * from article where sort_id='"+sort_id+"'";
ResultSet rs=jdbc.Query(sql);
try {
while(rs.next()){
article = new Article();
article.setArticle_id(rs.getInt(1));
article.setArticle_title(rs.getString(2));
article.setArticle_content(rs.getString(3));
article.setArticle_time(rs.getString(4));
article.setUser_id(rs.getInt(5));
article.setSort_id(rs.getInt(6));
list.add(article);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.closers();
jdbc.closestmt();
jdbc.closeconn();
return list;
}
}
}
用的话就用struts标签吧
那样简单多了
应该每次循环时都调用 article = new Article();
另,考虑到代码效率,定义article应放在循环之前,不要在循环里调用Article article = new Article();
String id = request.getParameter("sort_id");
int sort_id=Integer.parseInt(id);
List list = aj.getArticle(sort_id);
for(int i=0;i<list.size();i++){
Article article=(Article)list.get(i);
%>
<%=article.getTitle()%>
<% } %>看看你显示的<%=article.getTitle()%>
这时候for循环已经结束了
对象article指向的是list中的最后一条记录 显示内容当然就是最后一条的了
把它放入for循环就OK了
不好意思 想当然了仔细看了一下代码,同意二楼的看法如果把对象放在循环里, 每次都使用一个对象,虽然多次修改其值 但是引用的终究是一个对象,list集合中存放的也就是一个对象且为最后一次赋值时的结果
所以list中为一个对象,显示为最后一条记录的值
List list=new ArrayList();
Jdbc jdbc=new Jdbc();
String sql="select * from article where sort_id='"+sort_id+"'";
ResultSet rs=jdbc.Query(sql);
try {
while(rs.next()){
Article article=new Article(); article.setArticle_id(rs.getInt(1));
article.setArticle_title(rs.getString(2));
article.setArticle_content(rs.getString(3));
article.setArticle_time(rs.getString(4));
article.setUser_id(rs.getInt(5));
article.setSort_id(rs.getInt(6));
list.add(article);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
jdbc.closers();
jdbc.closestmt();
jdbc.closeconn();
return list;
}
}
}
这样就好了!!