Mysql
 sql >> Database >  >> RDS >> Mysql

Impossibile eseguire il cast di oggetti di tipo "System.DBNull" per digitare "System.Byte[]".

Poiché è possibile che non ci siano dati immagine precedentemente salvati per una riga, è necessario verificare DBNull prima di provare a utilizzarlo:

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

Nota che questo DBNull test è diverso da quello utilizzato da Steve. IsDBNull è una funzione del linguaggio mentre quella che sta usando è un metodo del DataReader oggetto, motivo per cui ci sono requisiti diversi. Ancora un terzo modo sarebbe confrontarlo con System.DbNull :

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