Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Não é possível converter o objeto do tipo 'System.DBNull' para o tipo 'System.Byte[]'.


Como é possível que não haja dados de imagem salvos anteriormente para uma linha, você precisa testar o DBNull antes de tentar usá-lo:
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

Observe que este DBNull teste é diferente do que Steve está usando. IsDBNull é uma função de linguagem enquanto a que ele está usando é um método do DataReader objeto, razão pela qual também existem requisitos diferentes. Ainda uma terceira maneira seria compará-lo com System.DbNull :
If DBNull.Value.Equals(dr("photo")) = False Then
    ...
End If