La fixation d'un DataRow élément null
J'ai un fichier texte que j'ai lu dans une table de données, puis effectuer un bulk insert dans une table SQL Server. C'est assez rapide et il fonctionne très bien lorsque toutes les valeurs importées sont traités comme des chaînes de caractères (les dates, les chaînes de caractères, entiers, etc sont tous importés dans les champs de type chaîne).
Maintenant que j'ai le concept élaboré, je vais revenir à attribuer réel les types de données dans la base de données et mon code. La base de données est correct types attribuée aux champs. Je suis en train de travailler sur le code maintenant.
Je vais avoir un problème avec les dates. Comme je l'ai dit, tout est une chaîne et se convertit le type correct. Dans le code suivant, je veux tester si la valeur de chaîne représentant une date est null ou un espace. Si elle n'est pas null, alors utiliser la valeur existante. Sinon, mis à null.
row[i] = !string.IsNullOrWhiteSpace(data[i]) ? data[i] : DBNull.Value;
J'ai essayé d'utiliser null
mais obtenez un message d'erreur me disant d'utiliser DBNull
à la place. Lorsque j'utilise DBNull
, je reçois un message me disant il n'y a pas de conversion implicite entre la chaîne et la System.DBNull
.
Les colonnes dans la table de données ont des types de données spécifié (dans ce cas, DataType = Type.GetType("System.DateTime")
) et j'ai mis AllowDBNull = true
pour cette colonne
Comment puis-je gérer cela?
Merci!
OriginalL'auteur DenaliHardtail | 2011-02-25
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est en raison de l'application que vous utilisez. Depuis
DBNull.Value
n'est pas une chaîne, vous ne pouvez pas utiliser l'opérateur conditionnel. C'est parce que, à partir de la opérateur conditionnel docs:Essayez de faire cela:
Cette contourne les exigences en matière de conversion pour les deux parties à faire de même. Alternativement, vous pouvez jeter un
System.Object
explicitement, et de toujours utiliser l'opérateur conditionnel.OriginalL'auteur Reed Copsey
Vous avez besoin de les jeter à la fois à des objets comme:
object
.OriginalL'auteur Shane Andrade
Je suis en train de travailler sur Asp.Net MVC 5 C# et de l'Application Web a fait comme cela et fonctionne bien
OriginalL'auteur RAVI VAGHELA