map.put(rsmd.getColumnName(j), rs.getString(j) == null ? "" : rs.getString(j));
时间: 2024-03-01 14:49:27 浏览: 110
这行代码将数据库查询结果集中第j列的列名和对应的值(字符串类型)存储到一个名为map的HashMap中。其中,rsmd.getColumnName(j)用于获取第j列的列名,rs.getString(j)用于获取第j列的值。另外,这里使用了一个三目运算符:rs.getString(j) == null ? "" : rs.getString(j)。它的作用是,如果第j列的值为null,则将其替换为空字符串"",否则不做处理。最终,将列名和值存储到map中。
相关问题
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);
这段代码是用于获取结果集中每列的数据,并将其存储在 HashMap 中的代码。具体来说,它首先通过 ResultSetMetaData 对象的 getColumnCount() 方法获取结果集的列数,并将其存储在变量 i 中。然后,它使用 for 循环遍历每一列的数据,并将每列的列名作为键,将该列的值作为值,存储在 HashMap 中。
在每一列的循环中,它首先使用 if 语句判断该列的列名是否为 "ID",如果不是,则从结果集中获取该列的值,并将其存储在变量 str 中。如果该列的值为 null,则将变量 str 赋值为空字符串。最后,它将列名和对应的值作为键值对存储在 HashMap 中。
需要注意的是,这段代码仅仅是将结果集中的数据存储在 HashMap 中,并没有对结果集进行遍历,因此只会存储结果集中的第一行数据。如果需要遍历整个结果集,可以将这段代码放在 while 循环中,并将每一行的 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` 列表对象。