从数据库中检索照片到 PictureBox

Retrieve photo from database to PictureBox

我有一个带有 2 个 WinForms 的 VB.NET 项目。现在在 Form 1 中,我添加了一个 PictureBox、一个 Button、一个 OpenFileDialog。我已经编写了将图片从 PictureBox 添加到 sql 数据库的按钮。现在我在 Form 2 中有了另一个图片框。

所以我的问题是,如何从 sql 数据库中检索图像并将其显示在图片框中?

连接字符串如下:

Dim con As New SqlConnection
con.ConnectionString = "Data source=" & My.Settings.sqlserver & "," & My.Settings.sqlport &
                       ";Network Library=DBMSSOCN;initial catalog=" & My.Settings.dbname & 
                       ";User id=" & My.Settings.Username &
                       ";Password=" & My.Settings.Password & ";"
Dim cmd As New SqlCommand("select * from userandadmins where Username = @username and Password = @password", con)
con.Open()

我使用 Oracle 存储照片。您需要使用与存储照片的字段类型相同的输出参数来检索照片。我假设它是一个 BLOB。在将照片存储到数据库之前,您必须将其转换为字节数组。由于这不是这里的问题,我将 post 我用来从我的 Oracle 数据库中检索照片的代码,转换为 Sql 服务器代码应该是一件简单的事情。

我打开一个到数据库的连接并将其传递给检索函数。我 return 一个包含一行数据、照片和其他识别信息的数据集。然后我将 BLOB 分配给一个变量,从那里做你需要的。我用它做的是将它分配给一个图像控件,该控件调用另一个 aspx 页面来检索照片 (imageURL)。检索它的代码在调用的 "Image.aspx" 中,然后 return 将照片发送到图像控件。 html 位于 GetPhoto 函数下方。这样我就不需要将照片存储在硬盘上的任何位置并检索它。

Dim MyConnection As New OracleConnection
Dim MyDataSet As New DataSet
Dim MyPhoto() As Byte = {}

MyConnection = OpenConnection(Session("USERNAME"), Session("PASSWORD"))

MyDataSet = GetPhoto(MyConnection, pPhotoID)

myPhoto = MyDataSet.Tables("Data").Rows(0)("Photo")

Public Function GetPhoto(ByVal TheConnection As OracleConnection, ByVal pPhotoID As String) As DataSet
    Dim myCommand As New OracleCommand
    Dim DS As New DataSet
    Try
        With myCommand
            .Connection = TheConnection
            .CommandText = "Darlington.PlayerSignUps.GetPhoto"
            .CommandType = CommandType.StoredProcedure
            .Parameters.Clear()
            .Parameters.Add(New OracleParameter("pPhotoID", OracleDbType.Varchar2, pPlayerID.Length)).Value = pPhotoID 
            .Parameters.Add(New OracleParameter("pDataOut", OracleDbType.RefCursor))
            .Parameters(0).Direction = ParameterDirection.Input
            .Parameters(1).Direction = ParameterDirection.Output
            Dim DA As New OracleDataAdapter(myCommand)
            DA.Fill(DS, "DATA")
            GetPhoto = DS
        End With
    Catch exc As Exception
        Throw New Exception("Error occured while retreiving photo from database, the error is: " & exc.Message)
    End Try
    myCommand = Nothing

End Function

<tr>
    <td style="width: 372px; text-align: center">
        <asp:Image ID="Image_Photo" runat="server" ImageUrl="Image.aspx" />
    </td>
</tr>