[HowTo] Save Image into SqlCE database

Save into database.

//Image to byte[]
Image myImage = Image.FromFile("c:\\xyz.jpg");
System.IO.MemoryStream imgMemoryStream = new System.IO.MemoryStream();
myImage.Save(imgMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imgByteData = imgMemoryStream.GetBuffer();
//Store image bytes data into database
SqlCeConnection scon = new SqlCeConnection("Data Source=D:\\myDB.sdf");
SqlCeCommand cmd = new SqlCeCommand("Update ImageTable Set Picture=@myPicture Where Username='Martin'", scon);
cmd.Parameters.Add("@myPicture", SqlDbType.Image).Value = imgByteData;
// Or cmd.Parameters.Add("@myPicture", SqlDbType.Binary).Value = imgByteData
scon.Open();
cmd.ExecuteNonQuery();
scon.Close();

Line 5 : After his creation, the ImgMemoryStream object must be transformed into a byte array.
Line 9 : Save this data array.

Retrieve from database :

SqlCeConnection scon = new SqlCeConnection("Data Source=D:\\myDB.sdf");
SqlCeCommand cmd = new SqlCeCommand("Select * From ImageTable Where id = 1", scon);
scon.Open();
SqlCeDataReader sdr = cmd.ExecuteReader();
byte[] imgByteData = Convert.ToByte(sdr.Item("Picture"));
Bitmap bitmap = new Bitmap(new System.IO.MemoryStream(imgByteData));
// or Dim bitmap As Bitmap = Drawing.Image.FromStream(new System.IO.MemoryStream(imgByteData));  
PictureBox1.Image = bitmap;

Line 5 : Convert the database field content into a byte array…
Line 6 : convert the byte array into a bitmap…

2 Comments on “[HowTo] Save Image into SqlCE database


Leave a Reply