2010-08-17 4 views
1

J'ai le code SQL suivant qui renvoie la valeur BILL_DATE maximale en fonction de certains critères. BILL_DATE est défini dans la base de données en tant que DATE.Récupération d'une date maximale à partir de DB2 en Java pour lancer une exception de conversion de type de colonne incorrecte

SELECT MAX(BILL_DATE) 
FROM BILLTABLE 
WHERE col1 = ? and 
     col2 = ? 

Mais quand je lis la valeur du resultSet.

bill.setBillDate(resultSet.getDate(1)); 

Une exception est levée:

Conversion de données incorrecte: type de colonne Mauvais résultat pour la conversion demandée. ERRORCODE = -4461, SQLSTATE = 42815

J'ai aussi essayé

bill.setBillDate(resultSet.getString(1)); 

Mais cela ne revient pas une date. Il retourne soit 100, 200 ou 300 qui est évidemment pas correct.

Existe-t-il une autre façon de procéder? Est-ce que je fais quelque chose de mal?

Merci, Randall

EDIT

J'ai eu deux ResultSets ouverts dans la fonction où je lisais dans le BILL_DATE. J'ai changé le code pour le suivant et ça fonctionne bien.

bill.setBillDate(resultSet1.getDate(1)); 
+0

Que voyez-vous si vous imprimez getString (1)? Comment définissez-vous le champ de date dans votre tableau? – Ash

+0

J'ai mis à jour ma question qui reflète vos questions. –

Répondre

0

J'ai eu deux ResultSets ouverts dans la fonction où je lisais dans le BILL_DATE. J'ai changé le code pour le suivant et ça fonctionne bien.

bill.setBillDate(resultSet1.getDate(1)); 
1

Ash a raison, comment définissez-vous la colonne de date?

Est-il possible de la colonne est horodatage? Dans ce cas, essayez resultSet.getTimestamp (1))

+0

J'ai mis à jour ma question qui reflète vos questions. –

Questions connexes