使用ResultSetMetaData获取map结果集

import java.sql.Connection; 

import java.sql.PreparedStatement; 

import java.sql.ResultSet; 

import java.sql.ResultSetMetaData; 

import java.sql.SQLException; 

import java.util.ArrayList; 

import java.util.HashMap; 

import java.util.List; 

import java.util.Map; 

 

public class ResultSetMetaDataTest { 

 

    public static void main(String[] args) throws SQLException { 

        List<Map<String, Object>> datas = read("select id, name as n from user where id < 5"); 

        System.out.println(datas); 

    } 

 

    static List<Map<String, Object>> read(String sql) throws SQLException { 

        Connection conn = null; 

        PreparedStatement ps = null; 

        ResultSet rs = null; 

        try { 

            conn = JdbcUtils.getConnection(); 

            ps = conn.prepareStatement(sql); 

            rs = ps.executeQuery(); 

            ResultSetMetaData rsmd = rs.getMetaData(); 

            int count = rsmd.getColumnCount(); 

            String[] colNames = new String[count]; 

            for (int i = 1; i <= count; i++) { 

                colNames[i - 1] = rsmd.getColumnLabel(i); 

            } 

            List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>(); 

 

            while (rs.next()) { 

                Map<String, Object> data = new HashMap<String, Object>(); 

                for (int i = 0; i < colNames.length; i++) { 

System.out.println(rsmd.getColumnLabel(i));

System.out.print(rsmd.getColumnClassName(i) + "\t");                      

System.out.print(rsmd.getColumnName(i) + "\t");

                      data.put(colNames[i], rs.getObject(colNames[i])); 

                } 

                datas.add(data); 

            } 

            return datas; 

        } finally { 

            JdbcUtils.free(rs, ps, conn); 

        } 

    } 

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值