Вам нужен как объект команды, так и средство чтения данных. Однако вы помещаете их не на ту страницу.
Если вы посмотрите свойства элемента управления Image
, вы увидите, что у него нет свойства Image
, поэтому вы не можете загрузить изображение и вставить элемент управления. Причина этого в том, что вы не можете отправить и страницу, и изображение в одном ответе, вместо этого браузер должен запрашивать изображение отдельно при загрузке страницы.
Чтобы получить изображение из базы данных и отобразить на веб-странице, вам нужна отдельная прокси-страница, которую можно использовать для получения только данных изображения из базы данных. В свойстве ImageUrl
элемента управления Image
вы должны поместить что-то вроде "GetImage.ashx"
. Затем вы создаете обработчик HTTP с этим именем, который будет просто получать данные изображения из базы данных и записывать в поток ответов.
Пример:
Private Sub HandleRequest(context as HttpContext)
Dim SqlCnn As SqlConnection = Nothing, sql As String
Dim emp_id As Integer
emp_id = Int32.Parse(context.Request.QueryString("id"))
ConnectDB(SqlCnn)
Try
sql = "SELECT image FROM employees (NOLOCK) WHERE ID =" & emp_id
sqlcmd = New SqlCommand(sqlstr, SqlCnn)
Dim imageData As Byte() = DirectCast(sqlcmd.ExecuteScalar(), Byte())
context.Response.ContentType = "image/jpeg"
context.Response.BinaryWrite(imageData)
Catch ex As Exception
ReportError(ex)
Finally
CloseDB(SqlCnn)
End Try
End Sub