私は自分のデータベースに画像を挿入しています。私は今挿入することができますが、私はファイルを取得するのに苦労しています。私は画像のデータ型としてvarbinary(max)を使用しました。vb.netのメモリ不足
はこれが挿入するための私のコードです:
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
、これは私が取得する方法である:
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
私の問題があり、それは私が私のプログラムを実行するたびにメモリ不足に述べています。どのようにそれを解決するには?私が検索しているイメージのサイズは2MBです。
私はmemorystreamを使用していますが、最もよく使用されているファイルストリームを調査しました。私はそれがいくつかの点で異なっていると信じています。
[out of memory Image.FromFile](http://stackoverflow.com/questions/3848132/out-of-memory)の可能な複製-image-fromfile) – GSerg
イメージが大きい場合は、イメージをどこかにアーカイブし、ファイル名だけを保存することを検討してください。あなたの読者は、複数の画像を作成することができるループを読むように設定されています。前のものは一切廃棄されていません。 – Plutonix
箱にRAMスティックを少し追加してください。 –