display/retrieve image from sql database in vb.net

后端 未结 2 539
孤独总比滥情好
孤独总比滥情好 2020-12-18 15:59

This should be pretty simple for a pro. I have images in sql server database and I want to retrieve them in my aspx (vb.net) file. I have in aspx this image control - in vb

相关标签:
2条回答
  • 2020-12-18 16:39
    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()
    
    0 讨论(0)
  • 2020-12-18 16:40

    You need both a command object and a data reader. However, you are putting them in the wrong page.

    If you check out the properties of the Image control you will see that it doesn't have any Image property, so you can't load an image and put in the control. The reason for that is that you can't send both the page and the image in the same response, instead the browser has to request the image separately when the page loads.

    To get the image from the database and show in the web page you need a separate proxy page that you can use to get only the image data from the database. In the ImageUrl property of the Image control you would put something like "GetImage.ashx". Then you make an HTTP handler with that name that will just get the image data from the database and write to the response stream.

    Example:

    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
    
    0 讨论(0)
提交回复
热议问题