2009-11-20 3 views
0

je recevais cette erreur com.ibm.db2.jcc.b.SqlException: Invalid argument: colonne inconnueNom COL1 lorsque j'essaie d'accéder à mon ResultSet avec rs.getString ("COL1"). La requête SQL est: Sélectionnez UPPER (COL1) from table1. la même requête et le code Java fonctionne bien avec DB2 v8 (pilote de type 2) mais il lève l'exception ci-dessus lors de l'utilisation avec DB2 v9 (pilote Type 4).com.ibm.db2.jcc.b.SqlException: Invalid argument: nom de colonne inconnue COL1

Cependant, je suis en mesure de résoudre cette erreur en ajoutant un alias, requête modifiée: Sélectionnez UPPER (COL1) COL1 de table1.

La requête ci-dessus fonctionne à la fois avec DB2 v8 et v9. cela signifie-t-il, dans DB2 9, nous devons fournir un alias lors de l'utilisation avec des fonctions comme (supérieur, couper, ..) ???

grâce

Répondre

1

Rien dans DB2 ou SQL exige que les noms de colonnes des fonctions à des valeurs spécifiques. Il se peut que les pilotes antérieurs (ou même les pilotes t2, que je n'utiliserais généralement plus, préférant t4 moi-même) vous aient donné un nom de colonne que vous attendiez mais je me demande ce qu'il vous aurait donné pour col1 | '.' | col2.

Votre requête vraiment devrait être ce que vous devez le faire fonctionner:

select upper(col1) as col1 from table1 

Cela garantit le nom de colonne est col1.

Si vous voulez vraiment savoir ce que les noms de colonnes sont à votre requête, vous pouvez récupérer les méta-données du jeu de résultats avec les appels suivants (exemples seulement):

ResultSet rs = <get your result set here>; 
ResultSetMeatData meta = rs.getMetaData(); 
for (int i = 1; i < meta.getColumnCount(); i++) { 
    System.out.println (getColumnName (i)); 
} 

Mais vous devriez utiliser la clause as pour s'assurer que les noms sont comme prévu.

Questions connexes