NullReferenceException et resultat requete vide

Résolu
djeje44800 Messages postés 21 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 14 janvier 2009 - 29 déc. 2008 à 09:23
djeje44800 Messages postés 21 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 14 janvier 2009 - 29 déc. 2008 à 09:55
Bonjour,

developpant en stage une application pour PDA, je fais de nombreux
essais pour comprendre la logique du code (n'ayant jamais développer
sur PDA ni sur visual studio 2005. Donc, l'étape où je commence à
coincer est la suivante : Comment gérer une requête avec un résultat
nul. Au départ, je me suis dis, c'est comme access, ça le gère
automatiquement. Et bien, non! Du coup, j'ai mis dans la requete un
AND C6 <> 0 


mais le résultat etait le meme (NullReferenceException). Donc, j'ai essayé ensuite avec un IF THEN, mais meme erreur.

Si quelqu'un a déjà connu cette erreur, peut il me faire signe.

PS: Mon code actuel :

Imports System.Data.SqlServerCe
Imports System.Data.Common
Imports System.Data
Imports System.IO
Public Class Form2

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            Dim CnxDb1 As SqlCeConnection = New SqlCeConnection("Data Source=storage card\essai.sdf")
            CnxDb1.Open()            Dim cc1 As String "SELECT c6 FROM correspond WHERE [nom_produit]'carotte' AND c6 <>''"
            Dim c1 As SqlCeCommand = New SqlCeCommand(cc1, CnxDb1)
            If c1.ExecuteScalar.ToString.Equals("") Then
            Else
                Label1.Text = c1.ExecuteScalar.ToString
            End If
        Catch ex As IO.FileNotFoundException
            MsgBox(ex.Message &amp; "erreur")
        End Try
        Try
            Dim CnxDb2 As SqlCeConnection = New SqlCeConnection("Data Source=storage card\essai.sdf")
            CnxDb2.Open()            Dim pren As String "select [nom_produit] from correspond where id_produit " &amp; Label1.Text
            Dim prenom As SqlCeCommand = New SqlCeCommand(pren, CnxDb2)
            TextBox2.Text = prenom.ExecuteScalar.ToString
        Catch ex As IO.FileNotFoundException
            MsgBox(ex.Message &amp; "erreur")
        End Try
    End Sub
End Class

2 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
29 déc. 2008 à 09:51
Salut,

If c1.ExecuteScalar.ToString.Equals("") Then

Si la requête ne renvoi aucun résultat, la méthode ExecuteScalar renvoi une référence nulle.
Il faut donc tester celà avant toute autre tentative, l'appel de ToString sur une référence nulle ne risque pas de fonctionner vu qu'il n'y a par définition rien au bout de la référence.

/*
coq
MVP Visual C#
CoqBlog
*/
3
djeje44800 Messages postés 21 Date d'inscription jeudi 11 décembre 2008 Statut Membre Dernière intervention 14 janvier 2009
29 déc. 2008 à 09:55
Merci beaucoup, mais je viens tout juste de réaliser où était l'erreur principale : le c6 <> "" . En le virant, ca marche direct. Je vais quand meme faire ce que vous me conseillez, pour eviter des erreurs supplémentaires.

Merci.
0
Rejoignez-nous