Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das Objekt vom Typ „System.DBNull“ kann nicht in den Typ „System.Byte[]“ umgewandelt werden.

Da es möglich ist, dass zuvor keine Bilddaten für eine Zeile gespeichert wurden, müssen Sie DBNull testen, bevor Sie versuchen, es zu verwenden:

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

Beachten Sie, dass diese DBNull Test unterscheidet sich von dem, den Steve verwendet. IsDBNull ist eine Sprachfunktion, während er eine Methode des DataReader verwendet Objekt, weshalb es auch unterschiedliche Anforderungen gibt. Ein dritter Weg wäre jedoch, es mit System.DbNull zu vergleichen :

If DBNull.Value.Equals(dr("photo")) = False Then
    ...
End If