public static List<Map<String, Object>> executeQuery(Connection connection, String sql) { List<Map<String, Object>> list = new ArrayList<>(); try { Statement statement = connection.createStatement(); ResultSet rs = statement.executeQuery(sql); ResultSetMetaData md = rs.getMetaData(); int columnCount = md.getColumnCount(); while (rs.next()) { Map<String, Object> rowData = new HashMap<>(); for (int i = 1; i <= columnCount; i++) { rowData.put(md.getColumnName(i), rs.getObject(i)); } list.add(rowData); } rs.close(); } catch (SQLException e) { e.printStackTrace(); } return list; }解释这段代码并加上注释
时间: 2024-02-14 12:09:58 浏览: 115
这段代码是一个 Java 方法,用于执行 SQL 查询语句。下面是对这段代码的注释:
```
public static List<Map<String, Object>> executeQuery(Connection connection, String sql) {
// 定义一个 List 存储查询结果
List<Map<String, Object>> list = new ArrayList<>();
try {
// 创建一个 Statement 对象
Statement statement = connection.createStatement();
// 执行 SQL 查询
ResultSet rs = statement.executeQuery(sql);
// 获取查询结果元数据
ResultSetMetaData md = rs.getMetaData();
// 获取查询结果的列数
int columnCount = md.getColumnCount();
// 遍历查询结果,将每行数据存储到 Map 中,再将 Map 存储到 List 中
while (rs.next()) {
Map<String, Object> rowData = new HashMap<>();
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
}
// 关闭查询结果集
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 返回查询结果
return list;
}
```
该方法接收两个参数,一个是数据库连接对象 Connection,另一个是 SQL 查询语句。通过 connection.createStatement() 创建一个 Statement 对象,再通过 executeQuery(sql) 方法执行 SQL 查询语句,返回一个 ResultSet 对象。然后通过 ResultSetMetaData 获取查询结果的元数据,包括列名、列类型等信息。接着遍历查询结果,将每行数据存储到一个 Map 中,然后将 Map 存储到 List 中。最后关闭 ResultSet 对象,返回存储查询结果的 List 对象。
阅读全文