从数据库检索照片到PictureBox

问题描述:

我有一个VB.NET项目与2 WinForms。现在在Form 1,我添加了一个PictureBox,一个Button,一个OpenFileDialog。我已经编码按钮来将图片从PictureBox添加到SQL数据库。现在我在Form 2有另一个picturebox。从数据库检索照片到PictureBox

所以我的问题是,如何从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() 
+2

请阅读[问]并参加[旅游]。您还需要在研究上取得更好的成绩:您的头衔会返回89,000次谷歌点击量和1,980个SO帖子。 – Plutonix

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

我打开到数据库的连接并将其传递给检索函数。我返回包含一行数据,照片和其他识别信息的数据集。然后我将BLOB分配给一个变量,从那里做你需要的。我用它做的是把它分配给一个图像控件,它调用另一个aspx页面来检索照片(imageURL)。检索它的代码位于被调用的“Image.aspx”中,然后将照片返回给图像控件。该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>