Puisqu'il est possible qu'aucune donnée d'image n'ait été précédemment enregistrée pour une ligne, vous devez tester DBNull avant d'essayer de l'utiliser :
If IsDBNull(dr("photo")) = False Then
Dim imagebytes As Byte() = CType(dr("photo"), Byte())
Using ms As New IO.MemoryStream(imagebytes)
PictureBox1.Image = Image.FromStream(ms)
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
End Using
Else
' maybe display a "no Photo Available" stock image
End If
Notez que ce DBNull
test est différent de celui que Steve utilise. IsDBNull
est une fonction du langage alors que celle qu'il utilise est une méthode du DataReader
objet, ce qui explique également pourquoi il existe des exigences différentes. Pourtant, une troisième façon serait de le comparer à System.DbNull
:
If DBNull.Value.Equals(dr("photo")) = False Then
...
End If