如何使用vb.net将许多图片从SQL Server数据库保存到特定文件夹

时间:2014-01-30 04:23:26

标签: sql sql-server vb.net image save

我是vb.net的新手,我有一个问题要完成我的任务。首先,我在vb.net中有一个项目,它有一个进程按钮,点击后会显示一个工作人员姓名列表SQL Server数据库(我正在使用SQL Server 2008 R2)到列表视图。然后我有复制按钮,一个按钮用于将列表名称复制到记事本(成功),另一个用于将列表名称复制到Excel(成功)。列表视图包括员工ID,名字和姓氏,每个ID都有自己的图像(人员图像)。

我想将所有图像(1137图像)从SQL Server数据库保存到桌面上的特定文件夹。我做了,但只保存了一张图片。如何将所有1137图像保存到文件夹?有人能帮助我吗?

这是我的代码:

 Private Sub btnsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnsave.Click
         Dim cn As SqlConnection
         cn = New SqlConnection
         cn.ConnectionString = "MyConnString;"
         Dim cmd As New System.Data.SqlClient.SqlCommand("SELECT pt_image FROM BadgeImages.dbo.portrait")

         cmd.Connection = cn
         cmd.CommandType = CommandType.Text

         cn.Open()
         Dim ImgStream As New IO.MemoryStream(CType(cmd.ExecuteScalar(), Byte()))
         Dim Image As System.Drawing.Image = System.Drawing.Image.FromStream(ImgStream)
         Image.Save("C:\Documents and Settings\prymax\Desktop\images + ".jpg", Imaging.ImageFormat.Jpeg)
End Sub 

此代码仅保存1张图片=(

2 个答案:

答案 0 :(得分:0)

您需要使用DataReader。您可以选择以下选项:

  1. 使用DataReader,并使用您在上面演示的技术保存结果,然后循环显示结果。

  2. btnsave_Click的内容转换为函数,并在将数据传递给所述函数时循环遍历列表(使用列表中的内容作为您WHERE的标识符SQL)

  3. 您可以使用DataReader将每张图片设置为Picturebox,然后立即使用

    保存Picturebox的内容
    Picturebox.Image.Save("path of image", imagefiletype)
    
  4. 这些都应该有用。

答案 1 :(得分:0)

Public Sub ExportImages()
    ConnDB()
    sql = "select Photo,ID from student"
    cmd = New MySqlCommand(sql, con)
    dr = cmd.ExecuteReader
    While dr.Read
        Dim byteImg As Byte() = CType(dr(0), Byte())
        Dim strPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\StudentPics\" & "" & dr(1) & ".jpg"
        Dim fs As FileStream = New FileStream(strPath, FileMode.CreateNew, FileAccess.Write)
        fs.Write(byteImg, 0, byteImg.Length)
        fs.Flush()
        fs.Close()
    End While
    dr.Close()
    con.Close()
End Sub

这对我来说很好用