2

我正在研究 Oracle 11g 企业版数据库。我们必须从数据库表中获取数据。数据库表具有以下类型的列之一:

  • 时间戳记
  • 时间戳

所有其他数据类型及其值均已成功获取。

我们apache meta-modal用于解析数据库表并使用它生成 CSV。

当我们在 rows 上使用此方法时:

row.getValues()[indexColumn]

但是此代码不获取给定行的列值,它以字符串形式返回oracle.sql.TIMESTAMPLTZ@70156e7b对象。我们需要它的价值。

将其转换为TIMESTAMPLTZ,抛出转换异常。或者 columnValue.timestampValue() 也没有任何意义。

如何以格式化方式使用 Apache 元模型获取列类型 TIMESTAMPLTZ 的值?

4

1 回答 1

3

好的,所以如果您在输出中看到类似“oracle.sql.TIMESTAMPLTZ@70156e7b”的内容,那么您的代码必须显式或隐式调用toString()对象oracle.sql.TIMESTAMPLTZ

这不会给你任何可读的东西,更不用说有用了,因为TIMESTAMPLTZ类不会覆盖toString(). 您所看到的是默认Object.toString()方法为您提供的。

AnTIMESTAMPLTZ实际上是一个日期转换器/适配器,它以某种形式包装日期。使用TIMESTAMPLTZ实例的方式是调用实例方法之一。例如,调用dateValue(Connection)一个TIMESTAMPLTZ对象会将包装好的 Oracle 内部日期转换为 Java 日期对象。其他实例方法转换为字符串、字节数组和 JDBC 日期/时间类。

(该类也有一堆静态转换器方法,但我认为这不是你需要的。)

于 2016-03-30T13:46:40.693 回答