Voir les traceurs | Bugs | Exporter au format CSV

Date :
08/06/2007 18:11
Priorité :
3
État :
Open
Proposé par :
David Jutard (admisource-djutard)
Confié à :
Nobody (None)
Category :
none
Group :
none
Resolution :
none
Résumé :
Bug : JDBCWrapper ne fonctionne pas avec Oracle et PreparedStatement

Description détaillée
JDBCWrapper, Oracle PreparedStatement

Un bug a été constaté dans le JDBCWrapper dès que l'on souhaite effectuer une requête INSERT ou UPDATE avec des colonnes ayant pour valeur NULL sur une base de données Oracle et avec un PreparedStatement



Le bug intervient dans la méthode execute(String sql, int type, Vector params) de la classe JDBCWrapper lors de la construction de la requête, dans le test du paramètre égal à null :

if (params.elementAt(i) == null) {
// si le parametre courant est nul, on fixe le champ sql à
// nul
_prep.setNull(i + 1, _prep.getParameterMetaData()
.getParameterType(i + 1));
}

La méthode getParameterType n'est pas supportée par le driver Oracle.
Cf http://forums.oracle.com/forums/thread.jspa?messageID=985762&#985762
Le lien donné sur metalink semble confirmer qu'Oracle n'implémente pas cette méthode (Bug 2622681 )



Une solution fonctionnant est d'utiliser la constante NULL de la class Types et donc de remplacer :

_prep.setNull(i + 1, _prep.getParameterMetaData()
.getParameterType(i + 1));

Par

_prep.setNull(i + 1, Types.NULL);


Nous avons effectué quelques tests, il faudrait tester plus en profondeur pour assurer que cette correction suffise.

Ce bug semble présent avec différentes versions d'oracle.
Il faudrait modifier le OracleJdbcWrapper pour qu'il puisse fonctionner avec Oracle.


Quelqu'un a-t-il déjà rencontré ce problème ?
Si oui, quelle solution de contournement a été mise en œuvre (hors proc stock & sql 'en dur' ) ?

No comments have been posted

No related tasks

Pas de documents joints

No changes have been made to this item

FEDER Powered By FusionForge Collaborative Development Environment Charte d'utilisation / Nous contacter / Mentions légales Haut de page