показать / получить изображение из базы данных sql в vb.net - PullRequest
1 голос
/ 10 марта 2010

Это должно быть довольно просто для профессионала.У меня есть изображения в базе данных сервера SQL, и я хочу получить их в моем файле aspx (vb.net).У меня в aspx этот контроль изображения - в vb.net я начал этот код -

Private Sub ImageDisplay()
    Dim SqlCnn As SqlConnection = Nothing, sql As String = ""
    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())
        Dim newImage As Image = Nothing
        If Not imageData Is Nothing Then
            Using ms As New MemoryStream(imageData, 0, imageData.Length)
                ms.Write(imageData, 0, imageData.Length)
                newImage = Image.FromStream(ms, True)
            End Using
            image1.Image = newImage
        End If
    Catch ex As Exception
        ReportError(ex)
    Finally
        CloseDB(SqlCnn)
    End Try
End Sub

Я получаю ошибку в 2 местах.- newImage = Image.FromStream (ms, True) - image1.Image = newImage Fromstream не является членом system.web.ui.webcontrols.image и вторая ошибка Изображение не является членом system.web.ui.webcontrols.image

Ответы [ 2 ]

2 голосов
/ 10 марта 2010

Вам нужен как объект команды, так и средство чтения данных. Однако вы помещаете их не на ту страницу.

Если вы посмотрите свойства элемента управления 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
1 голос
/ 01 февраля 2019
Dim cn As SqlConnection

    cn = New SqlConnection
    cn.ConnectionString = "Data Source=UMAR\UMAR;Initial Catalog=DMCHS;Integrated Security=True"

    Dim cmd As New System.Data.SqlClient.SqlCommand("select D1 from DBFile where mem_no=2")
    cmd.Connection = cn
    cmd.CommandType = CommandType.Text

    Dim ImgStream As New IO.MemoryStream(CType(cmd.ExecuteScalar, Byte()))

    PictureBox1.Image = Image.FromStream(ImgStream)

    ImgStream.Dispose()

    cmd.Connection.Close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...