使用 HashMap 存储数据库 table & 列名
Using a HashMap to store database table & column names
我有一些代码可以从数据库中检索 table 和列名:
PreparedStatement p = conn.prepareStatement(
"SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'SQLUser'");
rs = p.executeQuery();
我在想我可以使用 HashMap 来存储这些数据,其中键是 table 名称(它始终是唯一的)和一个 ArrayList 来存储包含在 table.
如何遍历 ResultSet,以便为每个 table 创建一个新的 ArrayList,用相关的列名称填充,然后使用该 table 名称作为键添加到 HashMap?
你可以这样使用:
Map<String, List<String>> map = new HashMap<String, List<String>>();
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
String table = rs.getString("table_name"));
ArrayList<String> columns = map.get(table);
if (columns == null) {
columns = new ArrayList<String>();
map.put(table, columns)
}
columns.add(rs.getString("column_name"));
}
您的代码应如下所示 -
Map<String, List<String>> tableMap = new HashMap<String, List<String>>();
ArrayList<String> columnList = new ArrayList<String>();
PreparedStatement p = conn.prepareStatement(
"SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'SQLUser'");
ResultSet rs = p.executeQuery();
while (rs.next()) {
String columnName = rs.getString("COLUMN_NAME"));
columnList.add(columnName);
}
tableMap.put("SQLUser", columnList);
您还可以使用 ResultSetMetaData 从 table 中获取列名。
ResultSet resultSet = st.executeQuery("Select * from SQLUser")
ResultSetMetaData metaData = resultSet.getMetaData();
int count = metaData.getColumnCount();
List<String> columnList = new ArrayList<String>();
for (int i = 1; i <= count; i++) {
columnList.add(metaData.getColumnLabel(i)));
}
我有一些代码可以从数据库中检索 table 和列名:
PreparedStatement p = conn.prepareStatement(
"SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'SQLUser'");
rs = p.executeQuery();
我在想我可以使用 HashMap 来存储这些数据,其中键是 table 名称(它始终是唯一的)和一个 ArrayList 来存储包含在 table.
如何遍历 ResultSet,以便为每个 table 创建一个新的 ArrayList,用相关的列名称填充,然后使用该 table 名称作为键添加到 HashMap?
你可以这样使用:
Map<String, List<String>> map = new HashMap<String, List<String>>();
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
String table = rs.getString("table_name"));
ArrayList<String> columns = map.get(table);
if (columns == null) {
columns = new ArrayList<String>();
map.put(table, columns)
}
columns.add(rs.getString("column_name"));
}
您的代码应如下所示 -
Map<String, List<String>> tableMap = new HashMap<String, List<String>>();
ArrayList<String> columnList = new ArrayList<String>();
PreparedStatement p = conn.prepareStatement(
"SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'SQLUser'");
ResultSet rs = p.executeQuery();
while (rs.next()) {
String columnName = rs.getString("COLUMN_NAME"));
columnList.add(columnName);
}
tableMap.put("SQLUser", columnList);
您还可以使用 ResultSetMetaData 从 table 中获取列名。
ResultSet resultSet = st.executeQuery("Select * from SQLUser")
ResultSetMetaData metaData = resultSet.getMetaData();
int count = metaData.getColumnCount();
List<String> columnList = new ArrayList<String>();
for (int i = 1; i <= count; i++) {
columnList.add(metaData.getColumnLabel(i)));
}