Est-il possible de passer un paramètre DB.null et définissez une valeur dans la base de données égale à?
Je suis de l'extraction de données à partir d'une base de données (1 dossier) et de mettre chaque valeur dans une zone de texte ou de liste déroulante. Certaines de ces valeurs sont DB.la valeur null. Si elles le sont, je convertir chacun d'eux "" (vide). Cependant, une fois que l'utilisateur a modifié les zones de texte/de la liste déroulante, ils peuvent "Sauver" les nouveaux résultats. Mon problème est le suivant:
Si l'utilisateur laisse un peu vide, je veux être en mesure de maintenir que la valeur est DB.la valeur null. Est-il un moyen de faire cela?
Aussi, est-il possible que s'il existe une valeur dans une zone de texte et l'utilisateur décide de le supprimer, je peux aussi le convertir en DB.Null? Voici ce que j'ai essayé de faire pour vous donner une idée:
productName != ""
? myCommand.Parameters.AddWithValue("@ProductName", productName)
: myCommand.Parameters.AddWithValue("@ProductName", DBNull.Value);
DBNull.Value
déjà, est-ce un échec?Une autre chose que vous pouvez faire est simplement de ne pas passer le paramètre à la procédure stockée - si aucune sélection n'a été faite. Quelque chose d'aussi simple que de
if txtBox.Length > 0 //pass param else //dont pass param
Est la chaîne vide, une valeur valide dans votre base de données? Si oui, comment allez-vous faire la différence entre un délibérée chaîne vide et un "null" chaîne vide?
Chris - Non, chaîne vide n'est PAS valide. C'est pourquoi je veux être en mesure de convertir DB.La valeur NULL. AdamHouldsworth - Oui, il n'a échec pour moi.
OriginalL'auteur The Vanilla Thrilla | 2011-12-13
Vous devez vous connecter pour publier un commentaire.
Avec SQL Server je crois que vous pouvez interchangably utilisation
null
ouDBNull.Value
définir une valeurNULL
.Je voudrais aussi changer votre code à ceci:
Ou à l'aide de
null
et sans un cast explicite:Oui, vous avez raison. Merci pour cette remarque. Je ne l'avais pas lancé ce de VS. L'édition maintenant. Et d'ailleurs je crois que c'est pourquoi j'avais utilisé
null
dans le passé, car il ne nécessite pas un plâtre.Votre deuxième méthode de travail? Je pensais que null est différente de la DB.null?
et
DBNull.Value
sont certainement différents types (c'est à direDBNull.Value != null == true
), mais le SQL client reconnaît que l'application de vouloir définir la valeurNULL
dans la base de données.Merci! Je demande alors pourquoi vous n'avez pas tout simplement utiliser la valeur null dans le premier exemple? Cela aurait empêchés d'avoir à catalogués à (objet).
OriginalL'auteur Yuck
Il est valide pour vérifier la chaîne vide, et ensuite utiliser:
si elle est, comme:
OriginalL'auteur Jay
Si vous travaillez avec .Net 2.0 ou supérieur, envisager de tirer parti de la Nullable(T) structure. C'est vraiment facile de tester les valeurs Null, vous pouvez simplement déposer les .La valeur de la propriété de l'objet dans votre zone de texte si ils spécifié une valeur. Ces objets de valeur null par défaut, de sorte que lorsque vous allez à mettre à jour des enregistrements dans la base de données, si aucune valeur n'a été spécifiée, vous laisser la variable seul et NULL dans votre base de données.
Je vous l'avoue il y a un peu bizarre de travailler avec dans un premier temps (que vous avez à retenir pour utiliser le .La valeur de la propriété lors de la liaison à une zone de texte), mais après que le premier obstacle de la structure est très pratique si vous allez être en contact avec un grand nombre de champs de base de données qui peut potentiellement avoir nullable valeurs.
OriginalL'auteur Dillie-O
Un peu plus courte version:
OriginalL'auteur
Préférable de ne pas attacher centrée sur les données, les types (comme
DBNull
) avec votreTextBox
. Alors qu'il peut rendre votre code plus propre sur le côté données il n'y a pas moyen intégré à automatiquement convertir une chaîne vide et deDBNull
.Un moyen propre sur votre DB côté serait
OriginalL'auteur D Stanley