对于使用弹簧 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;
    }
});

请指教,这里做错了什么?:(

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

请参阅此文档。"表名或 " 如果不适用"表示在您的情况下,DBMS/驱动程序不提供所需的信息,从而导致该方法返回空字符串。

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

相关内容

  • 没有找到相关文章

最新更新