我正在研究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日期/时间类。

(该类还具有许多静态转换器方法,但我认为这不是您所需要的。)

10-04 10:51