[英]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.