Так что я работаю с изображениями в проекте, и мне нужно получить изображения из базы данных в приложение VB.Net, проблема в том, что при извлечении NULL
в базе данных, он возвращает ошибку, что байты не должны быть нулевыми. Здесь есть статья, в которой указано, что «байты не должны быть пустыми», но я непосредственно передал данные из моей хранимой процедуры в свое приложение, например.Как проверить нулевые изображения в VB.net
Sub searchEmpPic(ByVal employeenumber As String)
Dim sqlcomm As New SqlCommand
Dim dt As New DataTable
Dim dta As New SqlDataAdapter
With sqlcomm
conn.Open()
.Connection = conn
.CommandText = "dbo.getEmpPic"
.CommandType = CommandType.StoredProcedure
.Parameters.AddWithValue("@eNum", employeenumber)
'error happens during DirectCast
If DirectCast(.ExecuteScalar, Byte()) Is Nothing Then
loadDefaultPic()
conn.Close()
Else
Dim imagedata As Byte() = DirectCast(.ExecuteScalar, Byte())
Dim ms As New MemoryStream
ms.Write(imagedata, 0, imagedata.Length)
Me.pbEpic.BackgroundImage = Image.FromStream(ms, True)
pbEpic.BackgroundImageLayout = ImageLayout.Zoom
conn.Close()
End If
.Dispose()
End With
End Sub
Как я могу решить эту проблему?
Это сохраненная Proc
ALTER procedure [dbo].[getEmpPic]
@eNum as varchar(10)
as
begin
select isnull(employee_picture,0) from employee where employee_id = @eNum
end
Я использовал ваш первый вариант, у меня были проблемы, потому что есть ошибка, которая утверждает, что параметр недействителен в строке «Me.pbEpic.BackgroundImage = Image.FromStream (ms, True)» Я удалил функцию isnull в моей хранимой процедуре , теперь он работает хорошо! – UserSeriously
Я исправил его, извините за итерации! – UserSeriously