Search

Wednesday, March 4, 2015
0 comments

edmx with linq query to save and retrieve image to database in windows form c#

7:05 AMWednesday, March 4, 2015
In my previous article we have already seen this article(Insert and retrieved) using ado.net in asp.net, On that time we  used nvarchar(size) datatype to store the image in database. Today, i am talking about image data type. Actually image data type store image in binary format. Also i will use edmx file or you can say entity framework to store and retrieve image from database table. First to create a database table in sql server management studio. Now, your table script look like:


USE [ht]
GO

/****** Object:  Table [dbo].[tblPicture]    Script Date: 4/3/2015 6:28:16 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[tblPicture](
[id] [int] IDENTITY(1,1) NOT NULL,
[pic] [image] NULL,
 CONSTRAINT [PK_tblPicture] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

Now, script generate the following design:


database table in management studio with image data type

Now, come to visual studio and create a new windows form project. Add two button control in the form, one for add image into database and another for retrieving image from table. Now add edmx file in the solution. After that you can write code in button click event handler block.

Code for insert image into database table:


  private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog opendlg = new OpenFileDialog();
            if(opendlg.ShowDialog()==DialogResult.OK)
            {
                Image img = Image.FromFile(opendlg.FileName);
                MemoryStream ms = new MemoryStream();
                img.Save(ms, img.RawFormat);
                htEntities1 ht = new htEntities1();
                ht.tblPictures.Add(new tblPicture() { pic = ms.ToArray() });
                ht.SaveChanges();
                MessageBox.Show("Load Sucess");

            }
        }
Here,

  1. First to open file dialog box and then save image into MemoryStream class.
  2. Now, you can save the MemoryStream object into database table with the help of context class(htEntities1) and model class(tblPicture).

Code for retrieving image from database table:

 private void button2_Click(object sender, EventArgs e)
        {
            htEntities1 ht = new htEntities1();
            var item = ht.tblPictures.Where(a => a.id == 1004).SingleOrDefault();
            byte[] arr = item.pic;
            MemoryStream ms = new MemoryStream(arr);
            pictureBox1.Image = Image.FromStream(ms);
         

        }
Here,

  1. Retrieve record by using linq query with lambda expression.
  2. Retrieved record insert into byte type array.
  3. Now, array pass into MemoryStream class constructor as a parameter.
  4. Now, Bind the PictureBox with Stream class.
Protected by Copyscape Online Copyright Protection Software

0 comments :

Post a Comment

 
Toggle Footer
Top