私はプロジェクト内のイメージを使用しています。データベースからVB.Netアプリケーションにイメージを取得する必要があります。問題はデータベース内のNULL
を取得するときです。バイトはnullではないというエラーを返します。ここでは、「Bytesは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
どうすればこの問題を解決できますか?
これは、ストアドプロシージャ
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