데이터베이스에 이미지를 삽입하고 검색하고 있습니다. 이제 삽입 할 수 있지만 파일을 검색하는 데 어려움을 겪고 있습니다. 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을 사용하고 있으며 가장 많이 사용한 파일 스트림을 연구했습니다. 나는 그것이 여러면에서 다르다고 믿습니다.
가능한 [메모리 부족 Image.FromFile] (http://stackoverflow.com/questions/3848132/out-of-memory -image-fromfile) – GSerg
큰 이미지의 경우 이미지를 어딘가에 보관하고 파일 이름 만 저장하는 것이 좋습니다. 독자가 여러 이미지를 만들 수 있음을 의미하는 루프를 읽을 수 있도록 설정되어 있습니다. 이전 이미지는 모두 삭제됩니다. – Plutonix
상자에 RAM 스틱을 몇 개만 추가하십시오. –