Merci pour ta r�ponse, mais le probl�me est plus g�n�ral.

Pour info, apr�s m'�tre document�, il semble que cela soit "normal".

En gros, dans les drivers pour SyBASE, SQLServer, et Oracle (non-test�),
les metadata ne renvoient pas le nom de la colonne. Donc, de fait :

Rs.getString ("matable.macolonne");             // erreur 'field not
found'
Rsmd.getColumnName (1);                         // Renvoie toujours vide


Cela quelque soit la requ�te.


La sp�cification JDBC de la r�cup�ration du nom de la colonne est
parait-il faible, et mal impl�ment�e par la plupart des drivers JDBC.
De plus, dans le cas de SQLServer et SyBASE, le probl�me est encore plus
simple : le protocole TDS (protocole de communication vers ces bases,
donc fondation des drivers JDBC) ne renvoie pas le nom de la colonne.




S�bastien Libert
SOGID.


-----Message d'origine-----
De�: HOMMET F ext OCISI [mailto:[EMAIL PROTECTED]] 
Envoy�: jeudi 2 janvier 2003 14:43
��: [EMAIL PROTECTED]
Objet�: RE: JDBC - TableName . FieldName

Par contre, dans ta demande, tu ne pr�cises pas si l'erreur se produit �
l'ex�cution de la requ�te ou lors de l'appel Java � Rs.getString() ?

Dans le premier cas, une incompatibilit� entre les formats de requ�te
SQL fait que, selon la degr� de param�trage de ton moteur d'�criture des
requ�tes, une partie de l'application au moins devra �tre r�-�crite.

Dans le deuxi�me cas, cela serait plut�t que la colonne n'est pas
trouv�e dans le ResultSet. As-tu essay� de faire un petit programme pour
afficher ce que renvoie le Rs.getMetadata.getColumnName(<int>) ?
Notamment sur la gestion des majuscules / minuscule dans les noms de
colonne.

Je ne suis pas sur que cela t'aide, mais � tout hasard, c'est peut-�tre
une piste.

-- 
Fabien Hommet

-----Message d'origine-----
De : [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
Envoy� : jeudi 26 d�cembre 2002 10:29
� : [EMAIL PROTECTED]
Objet : RE: JDBC - TableName . FieldName


Je proposerais un getString(index) au lieu de getString(String), mais �a
suppose que tu pr�cises les champs (et leur ordre) � r�cup�rer dans ton
SELECT et non pas *.
De toute fa�on, je trouve �a plus propre de ne pas tout ramener si tu ne
te sers pas de tout. 
Manu 
-----Original Message----- 
From: Libert S�bastien [mailto:[EMAIL PROTECTED]] 
Sent: mardi 24 d�cembre 2002 10:23 
To: '[EMAIL PROTECTED]' 
Subject: JDBC - TableName . FieldName 


Hello ! 
  
En ce jour de r�veillon de No�l, je fais appel aux braves de la liste
;-) 
  
Je suis en cours de test de migration d'une application JDBC MySQL vers
SQLServer. Je vous passe bien entendu le plaisir �vident de trouver le
driver JDBC pas cher et sympa... bref, je tombe sur un os.
J'ai pris comme habitude dans mes rs.getString () d'utiliser les noms
complets (table+champs) pour acc�der � mes donn�es. Cela me permets
d'�viter les soucis avec les nombreux JOIN de mes requ�tes.
 
  
Ainsi : 
  
Query = � SELECT * FROM customer LEFT OUTER JOIN project ON
customer.id_customer = project.id_customer � 
Rs = stmt.executeQuery (Query); 
Cust = Rs.getString ("customer.name"); 
Proj = Rs.getString ("project.name"); 
  
  
Cela fonctionne sous MySQL. 
  
  
Maintenant, le code ci-dessus sous SQL Server me donne une erreur �
Invalid column name �. En gros, interdiction d'utiliser le nom complet
des champs.
Il y a �videmment la clause AS � placer dans la requ�te SQL pour �viter
les soucis, mais cela ne fonctionne pas avec un SELECT *.
 
Quelqu'un aurait-il une id�e g�niale ? 
Comment puis-je �viter de r��crire mon application quasiment de fond en
comble ? 
  
  
  
  
S�bastien Libert 
SOGID. 
  

Répondre à