将rs.next()循环出来的数据在放到set里面去不就可以了,但是set中不能有重复元素!

解决方案 »

  1.   

    从ResultSet里一个一个取出来,利用各字段构造成一个所需的对象,塞到Set里去。
      

  2.   

    贴一段你看看:
    Connection conn = null;
    try {
    System.out
    .println("DVBAppInfoFacadeDAOImpl#findAppInfoListByServiceRef serviceRef : "
    + serviceRef);
    conn = ds.getConnection();
    PreparedStatement ps;
    Collection c = new ArrayList();
    String query = "SELECT"
    + " A.id,A.component_tag,A.service_ref,P.id,A.application_type,"
    + " A.descriptor_tag0x52,A.descriptor_data0x52,A.descriptor_tag0x6f,"
    + " A.descriptor_data0x6f,A.rate"
    + " FROM dvb_ait_stream AS A,dvb_pid AS P"
    + " WHERE A.service_ref=?" + " AND A.pid_ref=P.id";
    ps = conn.prepareStatement(query);
    ps.setInt(1, serviceRef);
    ResultSet rs = ps.executeQuery();
    while (rs.next()) {
    DVBAppInfoData daid = new DVBAppInfoData();
    daid.setId(new Integer(rs.getInt("id")));
    daid.setComponentTag(new Integer(rs.getInt(2)));
    daid.setServiceRef(new Integer(rs.getInt(3)));
    daid.setPidRef(new Integer(rs.getInt(4)));
    daid.setApplicationType(new Integer(rs.getInt(5)).toString());
    daid.setDescriptorTag0x52(rs.getBytes("descriptor_tag0x52"));
    daid.setDescriptorData0x52(rs.getBytes("descriptor_data0x52"));
    daid.setDescriptorTag0x6f(rs.getBytes("descriptor_tag0x6f"));
    daid.setDescriptorData0x6f(rs.getBytes("descriptor_data0x6f"));
    daid.setRate(new Integer(rs.getInt("rate"))); c.add(daid); }
    rs.close();
    ps.close();
    return c;
    ....
      

  3.   

    ResultSet rs = sql.executeQuery();
    while (rs.next()){....};