我尝试从 oracle db 获取一些数据,将这些数据放入 json 并在其他地方使用它,但是我在转换 timestamptz 时遇到问题。Oracle 以字符串格式为我提供带有时区的时间戳,例如“23.10.14 18:34:16,000000 ASIA/NOVOSIBIRSK”。这是我的一些代码。
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());
}
}
}
我得到了这个例外
java.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 中的所有内容。