Insert and Retrieve Image from SQL Server




Insert

SqlConnection cn = new SqlConnection();
DataSet ds = new DataSet();
string imageUrl = null;

private void Form1_Load(object sender, EventArgs e)
{
    cn.ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;" +
                                         "AttachDbFilename=|DataDirectory|MyDB.mdf;" +
                                          "Integrated Security = True";
    cn.Open();
    SqlDataAdapter daEmployee = new SqlDataAdapter("SELECT * FROM Product", cn);
    daEmployee.Fill(ds, "Product");
    dataGridView1.DataSource = ds.Tables["Product"];
}

private void select_picture_btn_Click(object sender, EventArgs e)
{
    using (OpenFileDialog ofd = new OpenFileDialog())
    {
        if (ofd.ShowDialog() == DialogResult.OK)
        {
              imageUrl = ofd.FileName;
              pictureBox1.Image = Image.FromFile(ofd.FileName);
        }
    }
}

private void save_picture_Click(object sender, EventArgs e)
{
    Image img = pictureBox1.Image;
    byte[] arr;
    ImageConverter converter = new ImageConverter();
    arr = (byte[])converter.ConvertTo(img, typeof(byte[]));
    SqlCommand cmd = new SqlCommand("INSERT INTO Product (ProductName, Photo, PhotoUrl) VALUES
                                                             (@ProductName, @Photo, @PhotoUrl)", cn);
    cmd.Parameters.AddWithValue("@ProductName", textBox1.Text);
    cmd.Parameters.AddWithValue("@Photo", arr);
    cmd.Parameters.AddWithValue("@PhotoUrl", imageUrl);
    cmd.ExecuteNonQuery();
    MessageBox.Show("Product saved");
    DataSet ds = new DataSet();
    SqlDataAdapter daEmployee = new SqlDataAdapter("SELECT * FROM Product", cn);
    daEmployee.Fill(ds, "Product");
    dataGridView1.DataSource = ds.Tables["Product"];
}

Retrieve

byte[] img = (byte[])dr["Photo"];
MemoryStream ms = new MemoryStream(img);
per_userpic.Image = Image.FromStream(ms);