DBNull erreur lors du Bind avec SQL Server

Résolu
Utilisateur anonyme - Modifié le 8 sept. 2008 à 13:50
 Utilisateur anonyme - 8 sept. 2008 à 13:50
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

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
7 sept. 2008 à 18:17
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
*/
3
ggtry Messages postés 417 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 21 juillet 2010 1
7 sept. 2008 à 18:28
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
3
hudon77 Messages postés 127 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 29 mai 2014
8 sept. 2008 à 13:29
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!
3
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++
3

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

Posez votre question
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++
0
Rejoignez-nous