Драйвер db2 возвращает java.lang.Integer для smallint - PullRequest
1 голос
/ 29 августа 2011
while(rs.next()){
          Object o = rs.getObject(i);
          System.out.println(o.getClass()); //prints java.lang.Integer
}

Проблема в том, что у меня есть тип smallint в базе данных, а драйвер возвращает тип Integer. Я делаю некоторую логику во время выполнения, а затем пытаюсь вставить значение обратно в базу данных, используя тип, который я ранее передавал в БД.

Я бы хотел, чтобы DB2 вернула мне java.lang.Short, но я не уверен, возможно ли это.

Кто-нибудь сталкивался с этим раньше и что вы сделали для обхода?

Основная проблема в том, что у меня есть столбцы int и smallint в базе данных DB2, и мне нужен мой Java-код, чтобы определить, какой из них основан на наборе результатов.

Спасибо.

1 Ответ

2 голосов
/ 29 августа 2011

Вместо того, чтобы полагаться на тип возвращаемого объекта Java, запросите набор результатов для фактического типа базы данных столбца:

String databaseTypeName = resultSet.getMetadata().getColumnTypeName(columnIndex);

или

int sqlType = resultSet.getMetadata().getColumnType();
boolean isSmallInt = (sqlType == Types.SMALLINT);

См. http://download.oracle.com/javase/6/docs/api/java/sql/ResultSetMetaData.html. Javadoc является таким ценным источником информации!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...