System.Convert.DBNull - affecter une valeur null à une variable

Résolu
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 - 7 mai 2007 à 18:26
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 - 9 mai 2007 à 20:28
Bonjour,
La question semble simple et pourtant cela peut etre un casse tete ...

je cherches à affecter une valeur null à une variable
ex:
j'ai une variable de type DateTime ,
si on ne lui affecte aucune valeur  elle a par défaut la valeur 01/01/0001 00:00:00
aussi je voudrais tout simplement que cette variable soit vide donc null

c'est pareil pour un int par exemple si on ne lui affecte pas de valeur par défaut il aura 0 , mais je ne veux tout simplement que cette variable soit "vide"

j'ai essayé avec UneVariableDeTypeDate = System.

Convert.DBNull;

mais j'ai des problêmes de cast même en essayant
UneVariableDeTypeDate = (

DateTime
) System.
Convert.DBNull;

j'ai regardé au niveau des datasets et j'ai observé que selon que une datarow a une valeur ou non le type de la datarow est changé dynamiquement selon exactement ce même type de ligne de code que si dessus
en fait la classe DataRow du dataset a des methodes SetNull pour chaque champ

mais pas moyen c'est quand même important car on a parfois besoin justement que nos variables restent vides

certains vont peut etre me parler des nullables (ce peut etre une solution) mais je pense aussi à .NET 1.0 et il n'y a pas de nullables en .NET 1.0 (a moins de se recréer la structure mais bon lol) enfin bref

si vous savez comment affecter une valeur null à une varible de type int ou datetime (par exemple) merci de me le dire :p

22 réponses

romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
8 mai 2007 à 15:06
lol je m'y attendais

mais si je persiste à vouloir utiliser System.Convert.DBNull c'est pour le cas d'un envoi vers une base de données ou un champ justement n'aurait pas de valeur (AllowDBNull)

il me semble avoir vu que SqlDbtypes pouvaient etre utilisés aussi mais je n'ai pas trop cherché
car si on envoi un object null à une base de donnée on récupére une exception
il faut envoyer un System.DBNull
d'ailleurs je serai curieux de savoir plus en profondeur comment un SGBD comme Access ou SQL Server traite/ fait pour que certains champs restent vides
0
romagny13 Messages postés 687 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 27 août 2014 3
9 mai 2007 à 20:28
Nickel
bon ca y est j'ai résolu mon problême

 en .NET 2.0
j'utiliserai les nullables
et pour le passage de paramêtres null vers une base de données SQL Server
il suffira que je passe
System.

Convert.DBNull
ou
System.

DBNull.Value

en value
tout en conservant le Sqldbtype de données 
ex : System.Data.

SqlDbType.Int

Pour .NET 1.0
Coq avait raison
j'utiliserais un booleen ou plutot le même type de struct que les Nullables en .NET 2.0

Merci beaucoup pour votre aide
0
Rejoignez-nous