需要使用Spring JDBCTemplate执行的多个查询的DB Table名称

时间:2016-03-09 16:30:23

标签: spring concurrency executorservice jdbctemplate

我正在同时执行多个查询并检索结果。但是,查询属于多个表,因此,在检索结果集时,很难识别结果集属于哪个表。 任何人都可以在这里帮助识别每个查询结果集的表名吗?

我尝试了下面的代码,但表名是空白的!!!!

    public static void getColumnNames(ResultSet rs) throws SQLException {
    if (rs == null) {
      return;
    }
    // get result set meta data
    ResultSetMetaData rsMetaData = rs.getMetaData();
    int numberOfColumns = rsMetaData.getColumnCount();

    // get the column names; column indexes start from 1
    for (int i = 1; i < numberOfColumns + 1; i++) {
      String columnName = rsMetaData.getColumnName(i);
      // Get the name of the column's table name
      String tableName = rsMetaData.getTableName(i);
      System.out.println("column name=" + columnName + " table=" + tableName + "");
    }
  }

我这样称呼这个方法:

jdbcTemplate.query(sql, new ResultSetExtractor<ResultSet>() {

@Override
public ResultSet extractData(ResultSet resultSet) throws SQLException,
                DataAccessException {
        getColumnNames(resultSet);
        return resultSet;
    }

});

请告知,这里做错了什么? :(

1 个答案:

答案 0 :(得分:0)

你这里没有做错任何事。问题是由与DBMS或JDBC驱动程序相关的方法本身引起的。

请见doc。 &#39;表名或&#34;&#34;如果不适用&#39;建议在你的情况下,DBMS /驱动程序不提供所需的信息,导致该方法返回一个空字符串。

我担心,您必须找到另一种方法来检测结果来自哪个查询。