2

私は Oracle 11g Enterprises Edition データベースに取り組んでいます。データベース テーブルからデータを取得する必要があります。データベース テーブルには、次のいずれかのタイプの列があります。

  • TIMESTAMPLTZ
  • TIMESTAMPTZ

他のすべてのデータ型とその値は正常にフェッチされます。

apache meta-modalデータベース テーブルを解析し、それを使用して CSV を生成するために使用しています。

行でこのメソッドを使用している場合:

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方法は、インスタンス メソッドの 1 つを呼び出すことです。たとえば、オブジェクトを呼び出すdateValue(Connection)TIMESTAMPLTZ、ラップされた Oracle 内部日付が Java Date オブジェクトに変換されます。他のインスタンス メソッドは、文字列、バイト配列、および JDBC の日付/時刻クラスに変換されます。

(クラスには静的なコンバーター メソッドも多数ありますが、ここで必要なものはないと思います。)

于 2016-03-30T13:46:40.693 に答える