Donne la valeur <NULL> à un champs de type bit lors d'un update

robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007 - 23 nov. 2006 à 13:14
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007 - 24 nov. 2006 à 12:07
bonjour,

je voudrais updater un champs de type bit dans une table de ma base de données (SQL Server 2000) avec la valeur <NULL>
pour cela j'ai coché la case Allow Nulls lors de la construction de la table et mis "(null)" dans la propriété Default Value de mon champs de type bit.

Pourtant dans ma méthode d'update je spécifie

SqlBoolean.Null et au lieu d'inscrire la valeur <NULL>, mon champs prend pour valeur 0.

que faire ?

Merci de votre aide

13 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
23 nov. 2006 à 19:20
Bonjour,

peux tu nous montrer ton code ? car tout semble bon.

<hr />Cyril - MVS - MCP
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 08:58
ma classe d'accès:








public





static
bool


Update(int id, SqlBoolean


includedMemoryCard)
{
   DataClasses.Parameters.spU_CameraDetails param = new DataClasses.Parameters.spU_CameraDetails



();


   DataClasses.StoredProcedures.spU_CameraDetails  sp = new DataClasses.StoredProcedures.spU_CameraDetails();



   param.SetUpConnection(


ConfigurationManager.ConnectionStrings["ConnectionString"
].ToString());




   param.Param_ID = idReflex;



   if

(!includedMemoryCard.IsNull) 
      param.Param_IncludedMemoryCard = includedMemoryCard;
   else


 
      param.Param_IncludedMemoryCard_UseDefaultValue();






   sp.Execute(

ref

param);
}

ma table:
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2006 à 10:18
il me semble qu'on fait un truc du genre normalement

command.paramaeters.Add("@toto", DBNull.Value);

la je ne vois pas le problème car je ne connais pas le fonctionnement de tes types métiers :-/

<hr />Cyril - MVS - MCP
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 10:26
en fait j'utilise Olymars pour générer mes procédures stockées et mes classes d'accèes.

pour adapter le DBNull.Value j'ai donc écrit:
param.Param_IncludedMemoryCard =

DBNull.Value;

mais ERROR : "Cannot implicitly convert type 'System.DBNull' to 'System.Data.SqlTypes.SqlBoolean' "

j'ai donc remplacé par SqlBoolean.Null mais rein n'y fait, il enregistre 0!

La solution réside peut-être dans la construction manuelle de ma méthode d'upadte pour réussir à enregistrer DBNull.Value!?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2006 à 10:29
Je connais pas OlyMars donc je sais pas comment il fonctionne :( Regarde avec SQL profiler p our voir quel est la requete envoyé à SQL ca devrait aider :-/

La solution de passer par la construction manuelle est une vraie fausse solution, car c'est pas trés propre ... :-s

<hr />Cyril - MVS - MCP
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 10:42
Je viens de découvrir grâce à toi SQL Profiler (merci!)
Dans l'historique, la procédure est au statut "RPC:Completed" et dans le Textdata... , @IncludedMemoryCard NULL, @ConsiderNull_IncludedMemoryCard default, ...
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 10:44
j'ajouterai que dans la colonne Writes la valeur est à 0.... donc forcément... ceci dit je ne vois toujours pas comment résoudre le pb :s
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2006 à 10:49
Tu n'es pas dans un context transactionnel ? qui aurait fait un rollback ?

c'est quoi exactement le code SQL généré ?

<hr />Cyril - MVS - MCP
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 10:54
exec spU_CameraDetails @ID = 8, @ID_Camera = 1, @ConsiderNull_ID_Camera = default, @IncludedMemoryCard = NULL, @ConsiderNull_IncludedMemoryCard = default, @InternalMemory = 1, @ConsiderNull_InternalMemory = default, @VideoMode = 0, @ConsiderNull_VideoMode = default, @Webcam = 1, @ConsiderNull_Webcam = default, @Weight = 0, @ConsiderNull_Weight = default, @Dimensions = '1,23 x 4,56 x 78,9', @ConsiderNull_Dimensions = default, @Resolution = 0.000000000000000e+000, @ConsiderNull_Resolution = default


 
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2006 à 11:14
Erf ca m'avance pas des masses ca, tu pourrais me monter la SP spU_CameraDetails stp ? :D

<hr />Cyril - MVS - MCP
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 11:16
autant pour moi :)... en meme temps, elle fait 1987 lignes... et oui OlyMars n'y va pas à moitié!
y a-t-il un moyen pour que je te l'envoie par mail ?
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
24 nov. 2006 à 12:04
une SP de 1987 lignes ? pas besoin de me l'envoyer je vais meme pas la regarder ... :p D'aprés ce que je vois je dirais que le problème n'est pas au niveau du code .net tout est bon jusqu'a l'arrivée de la requete dans SQL donc c'est la bas que ca merdouille :s Tu n'as pas coché une case ConvertNull to false ou un truc du genre dans OlyMars ? tu as bien regenré le code aprés avoir modifié la base ? je ne connais pas du tout OlyMars donc je vais pas pouvoir t'aider plus que ca :s

<hr />Cyril - MVS - MCP
0
robbielove Messages postés 25 Date d'inscription dimanche 25 janvier 2004 Statut Membre Dernière intervention 15 mars 2007
24 nov. 2006 à 12:07
je vais aller checker du côté de la configuration d'Olymars. en tout cas merci beaucoup pour ton aide!!
0
Rejoignez-nous