wangguanqiu521 2009-04-30 10:31
浏览 303
已采纳

从list取值

主要是实现功能:在jsp页面输入SQL语句,下面显示结果。基本思路:SQL语句存入hashmap,然后hashmap存入list,从list怎么取hashmap?从hashmap怎么取结果?用jsp取,相关代码:
public static List executeQueryStringList(String sql) {

    if (sql == null || sql.trim().equals("")) {
        log.info("参数sql不能为空,必须是select语句。");
        throw new NullPointerException("sql参数不能为空字符串或者null。");
    }
    Connection conn = null;
    PreparedStatement pst = null;
    ResultSet rst = null;
    List l = new ArrayList();
    try {
        conn = DbConnection.getConn(); // 打开链接
        pst = conn.prepareStatement(sql);// 开始执行sql

        ResultSetMetaData rsmd = pst.getMetaData();
        int columnCount = rsmd.getColumnCount();// 获取所有的列数;
        String[] columnStr = new String[columnCount];
        for (int i = 1; i <= columnCount; i++) {
            columnStr[i - 1] = rsmd.getColumnName(i).toLowerCase();// 都转换为小写
        }
        rst = pst.executeQuery();

        while (rst.next()) {
            String[] tempObject = new String[columnCount];
            for (int i = 0; i < columnCount; i++) {
                tempObject[i] = rst.getObject(columnStr[i]) == null ? ""
                        : rst.getObject(columnStr[i]).toString(); // 如果key和value任意一个为null,均会抛出异常
            }
            l.add(tempObject);
        }
        if (l.size() < 1)
            l = null;
    } catch (SQLException e) {
        log.error(sql + "语句查询出错!", e);
        return null;
    } finally {
        closeAll(rst, pst, conn);
    }
    return l;
}

[b]问题补充:[/b]
代码是领导给的,让我直接从list调出hashmap,然后从hashmap取值,我对于集合类不了解,这方面知识欠缺,怎么写jsp代码,从list调出hashmap呢?

  • 写回答

2条回答 默认 最新

  • iteye_8781 2009-04-30 16:00
    关注

    不知道你是不是这个意思:
    public class Test {

    public static Map<String,User> searchAllUser(String sql){
        Map<String,User> users = new HashMap<String,User>();
        User user = new User();
        /**
         * 这里你可以这样写
         * List<User> users = new ArrayList<User>();
         * rst = pst.executeQuery(); 
         * while(rst.next()){
         * User user = new User();
         * user.setName(rst.getString("userName"));
         * users.put(user);
         * }
         * return users;
         * 
         */
        users.put("user",user);
        return users;
    }
    
    public static List<User> getAllUser(){
        Map<String,User> users = searchAllUser("select * from user");
        List<User> allUsers = new ArrayList<User>();
        for(int i = 0 ; i < users.size() ; i ++){
            allUsers.add(users.get(i));
        }
        return allUsers;
    }
    
    public static void main(String[] args) {
        //在这里取List中的值
        List<User> users = getAllUser();
        for(User user : users){
            System.out.println(user.getName());
        }
    }
    

    }

    class User{
    private String name;

    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    

    }

    这样就可以取到Map中的值:
    for(Map.Entry map : users.entrySet()){
    String key = map.getKey();//当前Map中的Key
    User value = map.getValue();//当前Map中的value
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能