2013-11-21 4 views
1

В то время как я извлечения данных из моей базы данных, чтобы добавить к диаграмме с помощью JFreeChart я получаю ошибку:Ошибка - java.sql.Timestamp не может быть приведен к java.sql.Date в JFreeChart

java.sql.Timestamp cannot be cast to java.sql.Date 

I есть четыре столбца первые три извлекается правильно пользуясь случаем, но при прохождении последней колонки она идет к правильному делу:

case Types.TIMESTAMP: { 

но тогда возникает ошибку в этой части:

Date date = (Date) resultSet.getObject(column); 

Данные в базе данных отформатированы следующим образом (HH, MM, SS).

Edit - Также хотел бы добавить этот класс входит в API JFreeCharts - JDBCCategoryDataset.java

+0

не используйте 'java.sql.Date' хранить время, используйте' java.util.Date' или использовать 'java.sql.Timestamp' –

+0

@JavaDevil я все еще получаю эту ошибку даже после того, как меняя его на java.util.Date. Ошибка: Исключение: java.sql.Timestamp не может быть отброшен в java.sql.Date – mussi89

ответ

5
Date date = new Date(((Timestamp)resultSet.getObject(column)).getTime()); 
+0

Я по-прежнему получаю ту же ошибку Исключение: java.sql.Timestamp нельзя отнести к java.sql.Date – mussi89

+0

Работал для меня ^^ – Sonata

3

Во-первых, то не использовать java.sql.Date для времени - это не результат получали методом вы хотите .. ., если вы не хотите, чтобы ваше время, чтобы быть установлен в 0 для текущего часового пояса

от Docs:

To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.

Кроме того, почему использовать ResultSet.getObject и бросить, когда вы можете просто использовать ResultSet.getDate() или ResultSet.getTime() или ResultSet.getTimestamp(), где вы хотите использовать любой из двух двух.

Затем, если вы должны использовать объект даты, сделать java.util.Date как так

java.util.Date yourDate = new java.util.Date(resultSet.getTimestamp("Column").getTime()); 

Или, если он находится в базе данных в качестве строки "(HH,MM,SS)", то вы можете получить строку и использовать форматчик подобно SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("(hh,MM,ss)"); 
Date aDate = sdf.parse(resultSet.getString("column"); 
+0

I Still не получается, почему я получаю сообщение об ошибке - Исключение: java.sql.Timestamp не может быть передан в java.sql.Date, даже если его изменить на «java.util.Date» @JavaDevil – mussi89

+0

Каков тип данных столбца, который вы получение? и что вы сделали, чтобы изменить его? Вы использовали его явно как 'java.util.Date' как для типа данных объекта, так и в лите? –

+0

Тип данных - это дата в базе данных, когда он проходит через случай, который он идентифицирует как временную метку, в течение временного интервала выполняется следующий код, включая приведенное выше: java.util.Date date = new java.util.Date (resultSet.getTimestamp (колонка) .getTime()); \t \t \t \t Числовое значение = новое Долгота (date.getTime()); ---- Я просто изменил «столбец» в getTimeStamp, потому что это атрибут, который восстанавливается. @javaDevil – mussi89

Смежные вопросы