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()%>
<%      }   %>
为什么只重复显示最后一条查找到的数据的值

解决方案 »

  1.   


               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);
                    
                }
      

  2.   

    尝试将Article article=new Article() 放入循环里面Article article = null;
    try {
        while(rs.next()){
            article = new Article();
            article.setArticle_id(rs.getInt(1));
            ……………………
      

  3.   

    Article article=new Article();
    放到循环里面去
      

  4.   

    因为你生成的只有一个对象,应该把对象的创建放到while循环里么
    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;
            }
        }
    }
      

  5.   

    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;
            }
        }
    }
      

  6.   

    用struts吗?
    用的话就用struts标签吧
    那样简单多了
      

  7.   

    你每一次循环用的变量article 指向的都是同一个内存地址里,所以每做一次set,其实是覆盖了原值
    应该每次循环时都调用 article = new Article();
    另,考虑到代码效率,定义article应放在循环之前,不要在循环里调用Article article = new Article();
      

  8.   

    <%   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()%>            
    <%      }   %>看看你显示的<%=article.getTitle()%>            
    这时候for循环已经结束了
    对象article指向的是list中的最后一条记录 显示内容当然就是最后一条的了
    把它放入for循环就OK了
      

  9.   

    因为只声明了一个对象 所以LIST里面只显示一个对象。
      

  10.   

    程序是有问题的吧,你这个就算放到里面也不一定能行,用article(i)这样的东东来试试.
      

  11.   


    不好意思  想当然了仔细看了一下代码,同意二楼的看法如果把对象放在循环里, 每次都使用一个对象,虽然多次修改其值 但是引用的终究是一个对象,list集合中存放的也就是一个对象且为最后一次赋值时的结果
    所以list中为一个对象,显示为最后一条记录的值
      

  12.   

    干吗不直接读取一行记录,然后用Struts标签取得?
      

  13.   

    public class ArticleJdbc {    public List getArticle(int sort_id){
            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;
            }
        }
    }
    这样就好了!!