while (rs.next()) { //HashMap map = new HashMap(); int i = rsmd.getColumnCount(); for (int j = 1; j <= i; j++) { if (!rsmd.getColumnName(j).equals("ID")) { String str = rs.getString(j) == null ? "" : rs.getString(j); if (str.equals("null")) str = ""; map.put(rsmd.getColumnName(j), str); } else map.put("id", rs.getString(j)); }
时间: 2024-02-14 11:33:08 浏览: 66
这是一个在Java中用于遍历查询结果集合并将结果存储到HashMap中的代码块。其中,rs是一个已经获取到的ResultSet对象,rsmd是一个已经获取到的ResultSetMetaData对象,map是一个HashMap对象,用于存储查询结果。代码块首先通过rsmd对象获取到查询结果集合中包含的列的数量,然后通过for循环遍历每一列。在遍历每一列时,代码块首先判断该列是否为ID列,如果不是则将该列的名称和值存储到map中;如果是,则将该列的值存储到名为"ID"的键中。在存储值时,代码块首先判断该值是否为null,如果为null则将其转换为空字符串。最终,map中存储的是查询结果集合中每一行的数据,其中ID列的值存储在名为"id"的键中。
相关问题
public HashMap find(String sql) { HashMap map = new HashMap(); //List<HashMap> list = new ArrayList(); try { Statement st = conn.createStatement(); System.out.println(sql); 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")) { String str = rs.getString(j) == null ? "" : rs.getString(j); if (str.equals("null")) str = ""; map.put(rsmd.getColumnName(j), str); } else map.put("id", rs.getString(j)); } //list.add(map); break; } rs.close(); st.close();
这段代码是用于执行 SQL 语句并将结果存储在 HashMap 中的 Java 代码。具体来说,它通过 JDBC 连接到数据库,创建 Statement 对象,执行 SQL 查询语句并将结果存储在 ResultSet 对象中。然后,它通过 ResultSetMetaData 获取结果集的元数据信息,循环遍历结果集的每一行,并将每一列的数据以键值对的形式存储在 HashMap 中。最后,它关闭 ResultSet 和 Statement 对象,释放资源。
需要注意的是,这段代码只会返回结果集中的第一行数据,并且会将 ID 列的值存储在 "id" 键中。如果需要返回多行数据,可以将 HashMap 存储在 List 中,每次循环时将 HashMap 加入 List 中。
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; }
这段代码是一个数据库查询方法,用于执行传入的 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` 列表对象。
阅读全文
相关推荐
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pptx](https://img-home.csdnimg.cn/images/20241231044947.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)