DBNull erreur lors du Bind avec SQL Server [Résolu]

Signaler
-
 Utilisateur anonyme -
Bonsoir,

J'ai un soucis de DBNull lors du Bindage.
J'utilise la méthode la plus simple, aucun contrôle Data. J'utilise juste mes Textbox et DropDownList dans ma page et j'insère les données venant de SQL Server dans ceux-ci par code champ par champ, textbox par textbox.

Exemple : tbNom.Text = myReader("nom")

Tout va bien, sauf quand de nouveau quand mon champ nom (en nvarchar) dans SQL Server est vide. Je voudrais éviter de mettre une valeur par défaut dans SQL Server pour résoudre ce souci car j'ai beaucoup trop de champs. J'ai une centaine de Textbox à binder.

Voici l'erreur :
La conversion du type 'DBNull' en type 'String' n'est pas valide.
Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. Que faut il faire pour vérifier d'abord si myReader("nom") est DBNull ou pas ?
J'avais mis au départ tout mes myReader entre le blog Try/Catch, mais le souci c'est que dès qu'il tombait sur un champ qui était DBNull, il ne remplissait pas mes Textbox d'après. Il arrêtait le processus.

J'essaye de trouver une solution au plus simple car comme j'ai dis plus haut, j'ai une centaine de textbox de données à remplir. Le plus simple serait sûrement de faire une fonction du genre TestDBNull(myReader("nom")) qui vérifie d'abord si mon reader nom est DBNull ?

Merci

A++

5 réponses

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Salut,

Toute implémentation de data reader (donc ici SqlDataReader) doit posséder une méthode IsDBNull définie par l'interface IDataRecord.
Et de mémoire la classe Convert expose aussi cette méthode.

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Statut
Membre
Dernière intervention
21 juillet 2010
1
Bonjour,

en vb :

 If IsDBNull(myreader("nom")) = False Then
                TextBox1.Text = myreader("nom")
 End If

Je n'ai peut-être pas bien compris ce que tu faisais exactement, mais ne pouvais-tu pas faire un datalist, par exemple ?

GGtry
Messages postés
127
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
29 mai 2014

tu peux le gérer directement dans ta requete sql aussi.

exemple:    Select  IsNull(prenom, "") as Prenom From table

Donc si tu as une valeur null il te retournera un string vide.

Nicolas!
Hello,

Bon à savoir ca ! J'ai créé une petite fonction pour faire ca plus facilement :

Public

Function CheckDBNull(
ByVal NomChamp
As
String)
As
Object
If IsDBNull(myReader(NomChamp)) =
True
Then
Return
String.Empty

Else
Return myReader(NomChamp)

End
If
End
FunctionA++
Bonsoir,

Aussi simple que ca... :)
C'est parfait.

Au début j'avais fait ca avec un FormView, mais j'ai abandonné l'idée.

Merci à vous.

A++