오라클 db에서 데이터를 가져 와서이 데이터를 json에 넣고 다른 위치에서 사용하려고합니다.하지만 timestamptz를 변환하는 데 문제가 있습니다. 오라클은 "23.10.14 18 : 34 : 16,000000 ASIA/NOVOSIBIRSK"와 같은 문자열 형식의 타임 존을 가진 타임 스탬프를 제공합니다. 여기 내 코드의 일부.oracle.sql.TIMESTAMPTZ를 문자열 값으로 변환하는 데 문제가 있습니다.
public void loadFromDb(ResultSet resultSet, Connection oc) throws SQLException {
ResultSetMetaData metaData = resultSet.getMetaData();
int columnCount = metaData.getColumnCount();
for (int i = 1; i <= columnCount; i++) {
Object obj = resultSet.getObject(i);
if (obj == null)
continue;
if (obj instanceof TIMESTAMPTZ) {
TIMESTAMPTZ ts = (TIMESTAMPTZ) obj;
if (oc != null) {
super.setValue(metaData.getColumnName(i), ts.stringValue(oc));
} else {
super.setValue(metaData.getColumnName(i), ts.stringValue());
}
}
}
와 나는이 예외를 얻을
BTWjava.sql.SQLException: Conversion to String failed
at oracle.sql.Datum.stringValue(Datum.java:181)
, 이전에 내가 좋아하는 숫자 형식에서 시간대를 얻을 'XX : XX'이 코드도 작동하지만이 마법 super.setValue(metaData.getColumnName(i), ts.stringValue(null))
지금이 방법 thtows 작동하지 nullpointerexception. javadocs에있는 모든 것을 시도했기 때문에 제발 도와주세요.
jdbc 드라이버에 문제가있을 수 있으며 이것을 읽었습니까? http://stackoverflow.com/questions/17559658/oracle-jdbc-retrieving-timestamp-with-time-zone-value-in-iso-8601-format – Multisync
문제를 해결하는 가장 쉬운 방법은 문자열을 검색하는 것입니다 시간대가있는 타임 스탬프 표현 (해당되는 경우) – Multisync
@Multisync 어쩌면 내가 잘못 알고 있지만이 문제는 - 시간대가있는 타임 스탬프 문자열 표현을 얻습니다. – mechanikos