2011-06-14 79 views
3

我用这从数据库如何将图像从数据库添加到PictureBox?

cmd.CommandText = "select imagedate from projectimages where imagename = '" + _ 
    ListBox1.Text + "' and CSVprojectref=checksum('" + textboxFileRef.Text + "')" 

Dim img As Object = cmd.ExecuteScalar() 

获得的图像字节现在我怎么可以添加这PictureBox.image。我在检索图像并将其显示在PictureBox中时遇到了很多问题。

的数据类型是图像在SQL数据库和我使用这个代码来保存图像,以分贝

  Dim ms As New IO.MemoryStream 

     If imageFilename.Contains("jpeg") Or imageFilename.Contains("jpg") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) 

     End If 
     If imageFilename.Contains("png") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 
     End If 
     If imageFilename.Contains("gif") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Gif) 
     End If 
     If imageFilename.Contains("bmp") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp) 
     End If 

     Dim bytes() As Byte = ms.ToArray 
     Dim img As String = Convert.ToBase64String(bytes) 


     Dim cmd As New OleDb.OleDbCommand("insert projectimages values('" + imageNameTemp + "','" + img + "',CHECKSUM('" + textboxFileRef.Text + "'))", con) 
     cmd.ExecuteNonQuery() 
+0

你使用的是什么版本的VB? – 2011-06-14 21:55:14

+0

即时通讯使用视觉工作室2010 – ConfusedCoder 2011-06-14 21:56:38

+0

好的,你现在应该会看到更多的人。 – 2011-06-14 21:57:21

回答

3

5-6小时搜索论坛和博客的一切我喜欢这个......到图像保存到数据库

1-数据类型应该是图像数据库

现在添加以下代码存储在图像后到SQL数据库

OpenFileDialog1.ShowDialog() 
    imageFilename = OpenFileDialog1.FileName 
    Dim imageUpload As Image 
    imageUpload = Image.FromFile(OpenFileDialog1.FileName) 



    If imageFilename <> "" Then 

     Dim imageNameTemp As String 

     imageNameTemp = imageFilename 

     While (imageNameTemp.Contains("\")) 


      imageNameTemp = imageNameTemp.Remove(0, imageNameTemp.IndexOf("\") + 1) 
     End While 

     Dim ms As New IO.MemoryStream 

     If imageFilename.Contains("jpeg") Or imageFilename.Contains("jpg") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) 

     End If 
     If imageFilename.Contains("png") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Png) 
     End If 
     If imageFilename.Contains("gif") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Gif) 
     End If 
     If imageFilename.Contains("bmp") Then 
      imageUpload.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp) 
     End If 

     'Dim cmd As New SqlCommand("INSERT INTO projectimages (imagename,imagedate,csvprojectref) VALUES ('" + imageFilename + "',@BLOBData,CHECKSUM('" + textboxFileRef.Text + "'))", con) 

     Dim b() As Byte = ms.ToArray() 

     Dim cmd As New SqlCommand("INSERT INTO projectimages (imagename,imagedate,csvprojectref) VALUES ('" + imageNameTemp + "',@BLOBData,CHECKSUM('" + textboxFileRef.Text + "'))", con) 

     cmd.Parameters.Add("@BLOBData", SqlDbType.Image, b.Length).Value = b 
     ' Dim cmd As New SqlCommand("insert projectimages(imagename,imagedate,csvprojectref) values('imagma','" + img + "',CHECKSUM('" + textboxFileRef.Text + "'))", con) 

     cmd.ExecuteNonQuery() 

     ' cmdTemp.Parameters.Add("@photo", SqlDbType.Image, b.Length).Value = b 

    End If 

当检索数据插入到图片框使用此代码...

cmd.CommandText = "select imagedate from projectimages where imagename = '" +  ListBox1.Text + "' and CSVprojectref=checksum('" + textboxFileRef.Text + "')" 


     cmd.Connection = con 
     Dim da As New SqlDataAdapter(cmd) 
     Dim ds As New DataSet() 
     da.Fill(ds, "projectimages") 
     Dim c As Integer = ds.Tables(0).Rows.Count 
     If c > 0 Then 
      Dim bytBLOBData() As Byte = _ 
       ds.Tables(0).Rows(c - 1)("imagedate") 
      Dim stmBLOBData As New MemoryStream(bytBLOBData) 
      PictureBox1.Image = Image.FromStream(stmBLOBData) 
     End If 
0

使用MemoryStream对象按照Microsoft

+0

同样的错误出现在上面......如上面“参数无效” – ConfusedCoder 2011-06-14 22:09:05

0
Dim img As Byte() = DirectCast(cmd.ExecuteScalar(), Byte()) 
Dim ms as MemoryStream = New MemoryStream(img) 
pictureBox.Image = Image.FromStream(ms) 

假设图像日期字段a blob字段。

+0

这个错误参数无效。 on PictureBox1.Image = Image.FromStream(MemoryStreamms) – ConfusedCoder 2011-06-14 22:08:42

+0

@ConfusedCoder它必须是'Dim ms MemoryStream'。看看是否修复了错误。 – 2011-06-14 22:10:12

+0

nope同样的错误 – ConfusedCoder 2011-06-14 22:11:29

0

这是我的代码在vb.net中显示blob文件到图片框。希望它有帮助

Dim connstring As String = "Database=pmk;data source=localhost;user id=root;password=" 
Dim Sql As String = "select * from mastermahasiswa where Nim='" & TextBox1.Text & "'" 
Dim conn As New MySqlConnection(connstring) 
Dim cmd As New MySqlCommand(Sql, conn) 
Dim dr As MySqlDataReader = Nothing 
conn.Open() 
dr = cmd.ExecuteReader() 
dr.Read() 
Dim imagebytes As Byte() = CType(dr("Foto"), Byte()) 
Using ms As New IO.MemoryStream(imagebytes) 
    PictureBox1.Image = Image.FromStream(ms) 
    PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage 
End Using 
conn.Close()