bonjour a tous !
(et pardon d'avance pour la longueur mais je ne sais pas faire court ici)
voila que je dechante un peu du choix de Mysql pour l'implementation de ma couche DAO. Ca reste un tres bon SGBD mais la le syntaxe un peu speciale me du SQL me joue quelque tour.
Je m'explique :
je realise donc une couche DAO comprenant pour chaque table (un package de classe par table) 4 classes : un javabean, une daofactory, et une interfaceDAO (xxxxDAO) qui est implementee par ma classe MySQLxxxxDAO qui comprend mes requetes sous forme de PreparedStatement. Les requete etant enregistrer sous forme de constantes statique en debut de fichier.
Le pb est au niveau des cotes que necessite MySQL lors de l'update d'un enregistrement, ainsi par exemple, :
dans cet exemple si je veux inserer un String ou un entier, je met des cote dans la partie qui controle la construction de ma requete qui pour etre tout a fais precis ressemble pour chaque point d'interogation a ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private static final String STORE = "update sunthirdparty" + " set idcountry = ?, statut = ?, nameparty = ?, addressparty = ?," + " zipcodeparty = ?, postalboxparty = ?, cityparty = ?, telparty = ?, faxparty = ?," + " website = ?, descriptparty = ?, logoparty = ?, credateparty = ? " + " where idparty = ? ";
mais si mon objet passe en parametre comporte la valeur NULL, MySQL ne m'ecrit pas la valeur NULL mais une chaine de caractere 'NULL'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if (info.getIdcountry() != null){ ps.setObject(1,"'"+info.getIdcountry()+"'"); }else{ ps.setNull(1,Types.NULL); }
Pire encore lorsque j'update un champs de la base qui dois etre imperativement not null, et que la propriete correspondante de mon objet est null, il m'inscrit dans la base une chaine vide ('') ce qui pour lui n'est pas NULL et donc ne me genere aucune erreurs.
Comment faire pour gerer ceci ?
WDionysos
Partager