完整的jdbc查询结果集编码

 1 public static ArrayList<HashMap<String,Object>> query(Connection conn,String sql, Object[] paras) throws Exception {
 2         PreparedStatement statement = null;
 3         ResultSet ss = null;
 4         String str = "";//打日志使用
 5         ArrayList<HashMap<String,Object>> resultList = new ArrayList<HashMap<String,Object>>();
 6         statement = conn.prepareStatement(sql);
 7         if(paras!=null&&paras.length!=0){
 8             for (int i = 0; i < paras.length; i++) {
 9                 if (paras[i].getClass().getSimpleName().equals("Integer")) {
10                     statement.setInt(i + 1, (Integer)paras[i]);
11                     str+=paras[i];
12                 } else {
13                     statement.setString(i + 1, (String) paras[i]);
14                     str+=paras[i];
15                 }
16             }
17         }
18         ss = statement.executeQuery();
19         ResultSetMetaData rsmd = ss.getMetaData();//获得结果集的列信息
20         int columnNum = rsmd.getColumnCount();
21         while(ss.next()){
22             HashMap<String,Object> tmpMap = new HashMap<String, Object>();
23             for (int i = 1; i <=columnNum; i++) {//循环列组装list
24                 tmpMap.put(rsmd.getCatalogName(i), ss.getObject(i));
25             }
26             resultList.add(tmpMap);
27         }
28 //        logger.info("sql:"+sql+" paras:"+str+" resultList:"+resultList.size());
29         return resultList;
30     }

以上代码功能不够完成,酌情参考;

参数解析:

Connection conn,数据库链接java.sql.Connection;

String sql, 需要执行的查找SQL java.lang.String;

Object[] paras,根据查找需要传入的参数,Object类型,可以支持Integer和String类型的参数

ArrayList<HashMap<String,Object>> 返回查询结果集,list

语句解释:

ResultSetMetaData rsmd = ss.getMetaData();可以得到SQL查询的结果的列信息

int columnNum = rsmd.getColumnCount();得到结果集中列的数量

rsmd.getCatalogName(i) 根据一条数据中顺序获得当前列的名称

ss.getObject(i) 从结果集中获得当前列对应的数据

posted @ 2015-05-07 18:08  浪荡小新  阅读(787)  评论(0编辑  收藏  举报