我正在研究Oracle 11g企业版数据库。我们必须从数据库表中获取数据。数据库表具有以下类型的列之一:
时间戳
时报
所有其他数据类型及其值均已成功获取。
我们正在使用apache meta-modal
解析数据库表并使用它生成CSV。
当我们在行上使用此方法时:
row.getValues()[indexColumn]
但是此代码不会获取给定行的列值,而是将oracle.sql.TIMESTAMPLTZ@70156e7b对象作为字符串返回。我们需要它的价值。
将其强制转换为TIMESTAMPLTZ,引发强制转换异常。或columnValue.timestampValue()也没有任何意义。
如何使用Apache元模型以格式化的方式获取列类型TIMESTAMPLTZ的值?
最佳答案
好的,因此,如果在输出中看到类似于“ oracle.sql.TIMESTAMPLTZ@70156e7b”的内容,则必须在toString()
对象上显式或隐式调用oracle.sql.TIMESTAMPLTZ
的代码。
这不会给您任何可读性,更不要说有用了,因为TIMESTAMPLTZ
类不会覆盖toString()
。您将看到默认的Object.toString()
方法为您提供的内容。TIMESTAMPLTZ
实际上是日期转换器/适配器,它以某种形式包装日期。使用TIMESTAMPLTZ
实例的方式是调用实例方法之一。例如,在dateValue(Connection)
对象上调用TIMESTAMPLTZ
会将包装的Oracle内部日期转换为Java Date对象。其他实例方法将转换为String,字节数组和JDBC日期/时间类。
(该类还具有许多静态转换器方法,但我认为这不是您所需要的。)