簡體   English   中英

從vb.net中的sql數據庫顯示/檢索圖像

[英]display/retrieve image from sql database in vb.net

對於專業人士來說,這應該很簡單。 我在sql server數據庫中有圖像,我想在我的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的成員,第二個錯誤Image不是system.web.ui.webcontrols.image的成員

您需要一個命令對象和一個數據讀取器。 但是,您將它們放在錯誤的頁面中。

如果您檢出Image控件的屬性,則會看到它沒有任何Image屬性,因此您無法加載圖像並將其放入控件中。 這樣做的原因是您不能在同一響應中同時發送頁面和圖像,而是在頁面加載時瀏覽器必須單獨請求圖像。

要從數據庫獲取圖像並顯示在網頁中,您需要一個單獨的代理頁面,您可以使用該頁面僅從數據庫獲取圖像數據。 Image控件的ImageUrl屬性中,您將放置類似"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
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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM