【问题标题】:What Java data type corresponds to the Oracle SQL data type NUMERIC?什么 Java 数据类型对应于 Oracle SQL 数据类型 NUMERIC?
【发布时间】:2011-03-31 02:11:05
【问题描述】:

Oracle JDBC 驱动程序将什么 Java 数据类型分配给 Oracle SQL 数据类型NUMERIC?这会随着NUMERIC 类型的大小而变化吗?

【问题讨论】:

    标签: java sql oracle types sqldatatypes


    【解决方案1】:

    正如其他人已经说过的:驱动程序将所有内容映射到 BigDecimal,即使它被定义为 NUMBER(38)(可以映射到 BigInteger)

    但是很容易找出驱动程序映射的内容。只需在 ResultSet 的列上执行 getObject() 并查看驱动程序生成的类。

    类似:

    ResultSet rs = statement.executeQuery("select the_number_column from the_table"); 如果(rs.next()) { 对象 o = rs.getObject(1); System.out.println("类:" + o.getClass().getName()); }

    【讨论】:

      【解决方案2】:

      根据the Oracle documentationjava.math.BigDecimal


      “但是我对 BigDecimal 的强制转换会抛出一个 ClassCastException"

      您尝试过使用oracle.sql.NUMBER 吗?

      【讨论】:

      • 我也是这么想的,但是我对BigDecimal 的演员表抛出了ClassCastException
      • 根据该表,虽然 Oracle 数据类型始终为 NUMERIC,但 JDBC 数据类型取决于底层 SQL 数据类型,对于 INTEGERSMALLINT,将是 int .
      • 我会检查类型以找出答案。
      【解决方案3】:

      已经有一段时间了,但我相信它是 Java 中的 BIGINT。它是 BigDecimal。我记得你遇到的 classcastexception 会给出提示...

      【讨论】:

      • 您可能认为ClassCastException 会有所帮助,但在这种情况下,我们使用Hibernate 来执行查询,并且该方法返回Object
      • stackoverflow.com/questions/3504751/…,我针对我们使用 Spring Hibernate 模板的特殊情况提出了一个更具体的问题。
      猜你喜欢
      • 2015-12-27
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 2021-05-18
      • 2013-01-05
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      相关资源
      最近更新 更多