J'insère et récupère une image de ma base de données. Je peux maintenant insérer mais j'ai du mal à récupérer le fichier. J'ai utilisé varbinary (max) comme type de données de l'image.Mémoire insuffisante dans vb.net
Ceci est mon code pour insérer:
Dim ms As New MemoryStream
PictureBox1.Image.Save(ms, PictureBox1.Image.RawFormat)
Dim img() As Byte
img = ms.ToArray()
cmd.CommandText = "insert into stud values ('" & studno.Text & "', '" & password.Text & "', '" & fname.Text & "', '" & mname.Text & "', '" & lname.Text & "', @img, '" & gender.Text & "', '" & mm.Text & "/" & dd.Text & "/" & yyyy.Text & "', '" & phone.Text & "', '" & address.Text & "', 'Student', '" & secquest.Text & "', '" & answersq.Text & "', '" & TextBox1.Text & "', '" & ComboBox1.Text & "')"
cmd.Parameters.Add("@img", SqlDbType.VarBinary).Value = img
et voilà comment je récupérer:
con.Open()
cmd.CommandText = "select * from stud where studentno = 'mnb'"
cmd.Connection = con
dr = cmd.ExecuteReader()
While dr.Read()
studnum.Text = dr.Item("studentno")
fname.Text = dr.Item("fname")
mname.Text = dr.Item("mname")
lname.Text = dr.Item("lname")
gender.Text = dr.Item("gender")
section.Text = dr.Item("seccode")
bday.Text = dr.Item("bday")
phone.Text = dr.Item("phoneno")
address.Text = dr.Item("maddress")
Dim imageData As Byte() = DirectCast(dr("pic"), Byte())
If Not imageData Is Nothing Then
Using ms As New MemoryStream(imageData, 0, imageData.Length)
ms.Write(imageData, 0, imageData.Length)
PictureBox1.BackgroundImage = Image.FromStream(ms, True)
End Using
End If
End While
Mon problème est, il dit DE MÉMOIRE chaque fois que je lance mon programme. Comment le résoudre? La taille de l'image que je récupère est de 2 Mo. J'utilise memorystream et ce que j'ai recherché le plus utilisé filestream. Je crois que c'est différent à certains égards.
Copie possible de [hors de la mémoire Image.FromFile] (http://stackoverflow.com/questions/3848132/out-of-memory -image-fromfile) – GSerg
Pour une image de cette taille, envisagez d'archiver les images quelque part et de ne sauvegarder que le nom du fichier. Votre lecteur est configuré pour lire dans une boucle ce qui signifie que vous pourriez créer plusieurs images - aucun des précédents n'est disposé – Plutonix
Il suffit d'ajouter quelques bâtonnets de RAM à votre boîte –