完整的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) 从结果集中获得当前列对应的数据

转载于:https://www.cnblogs.com/sagech/p/4485684.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值