public List<HashMap> select(String sql) { List<HashMap> list = new ArrayList(); try { Statement st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); while (rs.next()) { HashMap map = new HashMap(); int i = rsmd.getColumnCount(); for (int j = 1; j <= i; j++) { if (!rsmd.getColumnName(j).equals("ID")) { map.put(rsmd.getColumnName(j), rs.getString(j) == null ? "" : rs.getString(j)); } else { map.put("id", rs.getString(j)); } } list.add(map); } rs.close(); st.close(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println("--" + sql); e.printStackTrace(); } return list; }
时间: 2024-04-28 17:20:58 浏览: 61
list 转化成hashmap例子
这段代码是一个数据库查询方法,用于执行传入的 SQL 语句并返回查询结果。
方法的参数是一个 SQL 语句,方法内部先创建一个 `ArrayList` 对象 `list`,用于存储查询结果。然后在 `try` 块中创建一个 `Statement` 对象 `st`,通过 `conn.createStatement()` 方法创建一个可以执行 SQL 语句的 `Statement` 对象。接着调用 `st.executeQuery(sql)` 方法执行传入的 SQL 语句,返回一个 `ResultSet` 对象 `rs`,用于遍历查询结果。
在遍历查询结果时,首先通过 `rs.getMetaData()` 方法获取查询结果的元数据信息,即每一列的名称、类型等信息。然后在 `while` 循环中遍历查询结果的每一行,对于每一行,先创建一个 `HashMap` 对象 `map`,用于存储这一行的数据。然后通过 `rsmd.getColumnCount()` 方法获取查询结果的列数,通过 `for` 循环遍历每一列,将列名和列值存入 `map` 对象中,如果列名为 "ID",则将列名改为 "id"。最后将这个 `HashMap` 对象 `map` 添加到 `list` 列表中。
最后在 `try` 块中关闭 `ResultSet` 对象 `rs` 和 `Statement` 对象 `st`,并返回存储查询结果的 `list` 列表对象。如果在执行查询过程中出现异常,则会跳转到 `catch` 块中,打印错误信息并返回一个空的 `list` 列表对象。
阅读全文