从哈希集中的表中的特定列获取数据

时间:2017-10-04 04:14:09

标签: java jdbc hashset

我正在从数据库中检索一些表并将这些表名存储在一个哈希集中。我用来检索表的代码如下

DatabaseMetaData md = conn.getMetaData();
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  hash. add(rs. getString(3) ) ;
}

现在我在哈希集中有表。

现在我想从特定列'student'的哈希集中检索所有这些表中的数据。并将所有值放在列表中。我想在所有这些表中检索列student的所有不同值。表格可能包含或不包含此学生专栏。如果表包含此列,那么我想将其不同的值存储在列表中。请建议怎么做。

1 个答案:

答案 0 :(得分:1)

请注意,您无法使用databasemetadata提取表数据。 Databasemetadata只提供表的详细信息,如名称,列,数据类型等。您需要与数据库建立JDBC连接,然后需要触发select查询以获得所需的结果。 下面是一个简单的JDBC程序:

DatabaseMetaData md = conn.getMetaData();
// get tables from database
ResultSet rs = md.getTables(null, null, "%", null);
while (rs.next()) {
  hash. add(rs. getString(3) ) ;
}
// getColumns of table 'tableName'
ResultSet rs2 = md.getColumns(null, null, tableName, null);
boolean found = false;
while (rs2.next()) {
String columnName = rs2.getString("COLUMN_NAME");
if (columnName.equalsIgnoreCase("student")) {
found = true;
break;
}
}
if (found) {
String driver = "provide the driver for database here like com.mysql.....";
String url = "provide the connection url here like jdbc://...."
String userName = "provide DB username"
String password = "provide DB username"
Class.forName(driver)
Connection conn = DriverManager.getConnection(url, userName, password)
Statement st = conn.createStatement();
Resultset rs3 = null;

// Now take the tableName from your hashset and pass it into below query.
String query = "select student from " + tableName;
rs3 = st.executeQuery(query);
While(rs3.next()) {
// Store the results anywhere you want by obtaining 'rs3.getString(1)'
}
}

希望这可以解决您的问题。如果有的话,请忽略代码中的拼写错误。