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.