【问题标题】:Spring JdbcTemplate: Return value type of count(*) in ResultSet of PreparedStatementSpring JdbcTemplate:PreparedStatement的ResultSet中count(*)的返回值类型
【发布时间】:2019-02-02 20:16:54
【问题描述】:

Spring JdbcTemplate的Prepared Statement的ResultSet中count(*)的返回值类型是什么?

        String query = "select count(*) as ROW_COUNT from table1";

        List<Map<String, Object>> list = executePreparedStatement(query);

        Iterator<Map<String, Object>> iter = list.iterator();
        if (iter.hasNext()) {
            Map<String, Object> lom = iter.next();
            return (((Long) lom.get("ROW_COUNT"))).intValue();
        }

这是否取决于 JDBC 驱动程序/和/或数据库?

例如,在 DB2 中返回值类型是 Integer,但在 PostgreSQL 中是 Long。

为什么不一样?

【问题讨论】:

  • return (((Number) lom.get("ROW_COUNT"))).intValue(); 呢?

标签: spring postgresql db2 jdbctemplate


【解决方案1】:

不同的供应商有不同的实现。

有时甚至一个供应商也可以有不同的实现。

您需要相应地编码。

用于 Linux/Unix/Windows 的 Db2、用于 i 系列的 Db2、用于 Z/OS 的 Db2,都从 COUNT 函数返回一个大整数。

另外,如果表是分布式的,Db2 for i 可以从计数函数返回 DECIMAL(15,0)。

Db2 中还有一个 COUNT_BIG 函数,它返回 DECIMAL(31,0)。

【讨论】:

猜你喜欢
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 2020-12-02
  • 2017-03-13
  • 1970-01-01
  • 2017-07-24
相关资源
最近更新 更多