sql server - Deserializing byte to image from sql through memory stream -


i have convert image saved in sql server database binary column name "img". have picturebox1 ready show image.

now want import binary data image, , i'm trying code in vb.net example:

dim queries string queries = "select * studentdata std_fname='" & combobox1.text & "'" dim com new sqlcommand(queries, sqlconn) sqlconn.open()  dim ds new sqldataadapter(queries, sqlconn)  dim dr sqldatareader dr = com.executereader()  while dr.read     std_fnametextbox.text = dr("std_fname")     std_lnametextbox.text = dr("std_lname")     agetextbox.text = dr("age")     addresstextbox.text = dr("address")     statetextbox.text = dr("state")     citytextbox.text = dr("city")     countrytextbox.text = dr("country")     ic_passporttextbox.text = dr("ic_passport")     dobdatetimepicker.text = dr("dob")     picturebox1.image = dr("img") 'here problem. if run it, ask me convert binary image first. end while sqlconn.close() 

the problem is, don't know how convert binary image in situation. , yes, i've been googling it, can't seem right answer.

dr("img") returns either dbnull.value, or byte[]. can use stream overload of bitmap constructor load this. in c# (should easy translate vb), can this:

var imagedata = (byte[])dr["img"];  using (var ms = new memorystream(imagedata)) {   var bmp = new bitmap(ms);    // work bmp } 

as mark correctly noted, you're supposed keep stream open whole life-time of bitmap - bit trickier seems, because bitmap doesn't keep reference stream.

the easiest way handle clone bitmap after create it, remove dependency on stream. unless can whatever work need within using - unlikely if want display in picturebox.

you can use imageconverter.convertfrom directly, create memorystream if used on raw byte[] data :)


Comments