[英]display/retrieve image from sql database in vb.net
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. 我在sql server数据库中有图像,我想在我的aspx(vb.net)文件中检索它们。 I have in aspx this image control - in vb.net i have started this code - 我在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
I am getting error on 2 places. 我在2个地方出错。 - newImage = Image.FromStream(ms, True) - image1.Image = newImage Fromstream is not a member of system.web.ui.webcontrols.image and second error Image is not a member of system.web.ui.webcontrols.image -newImage = Image.FromStream(ms,True)-image1.Image = newImage Fromstream不是system.web.ui.webcontrols.image的成员,第二个错误Image不是system.web.ui.webcontrols.image的成员
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. 如果您检出Image
控件的属性,则会看到它没有任何Image
属性,因此您无法加载图像并将其放入控件中。 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"
. 在Image
控件的ImageUrl
属性中,您将放置类似"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. 然后,使用该名称创建一个HTTP处理程序,该处理程序将从数据库中获取图像数据并将其写入响应流。
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
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.