微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在vb.net中显示/检索sql数据库中的图像

对于专业人士来说,这应该非常简单.我在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,imageData.Length)
                ms.Write(imageData,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控件的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

原文地址:https://www.jb51.cc/vb/255813.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐