一老坛酸菜一 2015-09-03 10:20 采纳率: 0%
浏览 2189
已结题

关于resultset读取和arraylist保存的问题

    String sql ="select * from shop_something ";
    ResultSet re = db.query(sql);
    ResultSetMetaData md =re.getMetaData();
    dish some= new dish();
    ArrayList<dish> list= new ArrayList();
    while(re.next())
    {
        some.setId(re.getString("id"));
        some.setCatelog_id(re.getString("Catelog_id"));
        some.setDescribe(re.getString("describe"));
        some.setImge(re.getString("image"));
        some.setName(re.getString("name"));
        some.setPrice(re.getFloat("price"));
        some.setSupplier(re.getString("supplier"));
        list.add(some);
    }

    for(dish ds:list)
    {
        System.out.print("   "+ds.getId()+"hello");
    }


    有两个对象 对象里分别有id11 和id22 两个属性
    以上代码 使用 for each 输出的结果 只有两个id22  
    这是为什么  
    另外有没有更好 的方法来访问数据库并封装到list表中? 使用反射的话可以详细讲解吗? 谢谢!
  • 写回答

4条回答 默认 最新

  • 于金龙 2015-09-03 10:34
    关注

    输出2个id22的原因是:你只创建了一个dish对象。而list中保存dish,保存的是该对象的引用。

    想正确存储,你可以讲代码

      dish some= new dish();
    

    放到

     while(re.next())
    

    这个while循环的里面。

    至于较好的方法,随便进个公司,都会有封装好的现成的方法吧,不仅要保存数据,还要保存字段名称、字段类型等。

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?