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&¶s.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) 从结果集中获得当前列对应的数据
时间: 2024-11-06 23:24:46