首页 > 代码库 > 利用结果集元数据将查询结果封装为map

利用结果集元数据将查询结果封装为map

 1 package it.cast.jdbc; 2  3 import java.sql.Connection; 4 import java.sql.ParameterMetaData; 5 import java.sql.PreparedStatement; 6 import java.sql.ResultSet; 7 import java.sql.ResultSetMetaData; 8 import java.sql.SQLException; 9 import java.util.HashMap;10 import java.util.Map;11 12 public class ResultSetMetaTest {13 14     public static void main(String[] args) throws SQLException {15         16         Map<String,Object> map = read("select * from user where id=2");17         System.out.println(map);18     }19 20     static Map<String, Object> read(String sql) throws SQLException {21 22         Connection conn = null;23         PreparedStatement ps = null;24         ResultSet rs = null;25 26         try {27             conn = jdbcUtils.getConnection();28             ps = conn.prepareStatement(sql);29             rs = ps.executeQuery();30 31             ResultSetMetaData rsmd = rs.getMetaData();32 33             // 得出有多少列34             int count = rsmd.getColumnCount();35 36             String[] colNames = new String[count];37 38             for (int i = 1; i <= count; i++) {39                 // System.out.print(rsmd.getColumnClassName(i)+"\t");40                 // System.out.print(rsmd.getColumnName(i)+"\t");41                 // System.out.println(rsmd.getColumnLabel(i)+"\t");42                 colNames[i-1] = rsmd.getColumnName(i);43             }44 45             Map<String, Object> data = http://www.mamicode.com/null;46 47             while (rs.next()) {48                 data = http://www.mamicode.com/new HashMap<String, Object>();49                 50                 for (int j = 0; j < colNames.length; j++) {51                     data.put(colNames[j], rs.getObject(colNames[j]));52                 }53             }54 55             return data;56         } finally {57             jdbcUtils.free(rs, ps, conn);58         }59     }60 }
ResultSetMetaTest

 

利用结果集元数据将查询结果封装为map