Mysql
 sql >> Base de données >  >> RDS >> Mysql

Impossible de convertir l'objet de type 'System.DBNull' en type 'System.Byte[]'.

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