public ArrayList queryAll(String sql) {
        try {
            java.sql.ResultSet rs = this.query(sql);
            if (!rs.next()) {
                return null;
            }
            ArrayList list = new ArrayList();
            HashMap map = new HashMap();
            java.sql.ResultSetMetaData rm = rs.getMetaData();
            System.out.println(sql); // 这里打印了
            while (rs.next()) {
                System.out.println(sql);// 这里没打印
                for (int i = 1; i <= rm.getColumnCount(); i++) {
                    map.put(rm.getColumnName(i), rs.getString(rm.getColumnName(i))); 
                }
                list.add(map);
            }
            rs.close();
            return list;
        } catch (SQLException ex) {
            Logger.getLogger(Db.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }为什么查询不到结果呢,数据库有记录的
而且SQL 也打印出来了

解决方案 »

  1.   

    我觉得可以把while 那句去掉的  for本身就是循环的 没必要加while
      

  2.   

    for 是遍历 该条记录的 所有字段啊
      

  3.   

    数据库是不是只有一条记录啊?
    如果是的话
    if里的rs.next 已经让指针向下走了一次了
    while 就没有了
      

  4.   

    他这里FOR 遍历的是列 ~~应该没问题
      

  5.   

    搞定了。            java.sql.ResultSet rs = this.query(sql);
                /*if (!rs.next()) {
                return null;
                }*/
                ArrayList list = new ArrayList();
                while (rs.next()) {
                    java.sql.ResultSetMetaData rm = rs.getMetaData();
                    HashMap map = new HashMap();
                    for (int i = 1; i <= rm.getColumnCount(); i++) {
                        map.put(rm.getColumnName(i), rs.getString(rm.getColumnName(i)));
                    }
                    list.add(map);
                }
      

  6.   

    if (!rs.next()) {
                    return null;
                }数据库只有一条记录吧。