gpt4 book ai didi

mysql - 无法将类型 'System.DBNull' 的对象强制转换为类型 'System.Byte[]' 。

转载 作者:行者123 更新时间:2023-11-29 12:39:06 35 4
gpt4 key购买 nike

当我尝试在数据库中没有图像的 ListView 中选择一个项目时,此错误显示无法将“System.DBNull”类型的对象转换为“System.Byte[]”类型。 我尝试添加一些代码,例如 isDBNullDBNull 但它是适用的。

这是我的代码:

Private Sub LvPeople_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LvPeople.SelectedIndexChanged
If LvPeople.SelectedItems.Count > 0 Then
Dim connstring As String = "server = localhost; user id = root; database = db; password = root"
Dim Sql As String = "select * from candidate where idn='" & LvPeople.SelectedItems(0).Text & "'"
Dim conn As New MySqlConnection(connstring)
Dim cmd As New MySqlCommand(Sql, conn)
Dim dr As MySqlDataReader = Nothing
conn.Open()
dr = cmd.ExecuteReader()
dr.Read()
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
conn.Close()
End If
End Sub
End Class

这里的错误点:

将图像字节调暗为 Byte() = CType(dr("photo"), Byte())

我真的不知道该放什么在这里。只是这里的新手。

最佳答案

由于某行之前可能没有保存图像数据,因此在尝试使用它之前需要测试 DBNull:

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

请注意,此 DBNull 测试与 Steve 使用的测试不同。 IsDBNull是一个语言函数,而他使用的是DataReader对象的方法,这也是为什么有不同的要求。第三种方法是将其与 System.DbNull 进行比较:

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

关于mysql - 无法将类型 'System.DBNull' 的对象强制转换为类型 'System.Byte[]' 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369228/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com