insert image to a local database then put it to DataGridView using C#

Viewed 24

I create windows desktop app with a local database this my first windows desktop app i make with C# Im not good enough in C# anyways I try to insert my data to the database but this error came out to me enter image description here I know it's caused by byteArrayToImage method how I can fix it ? it's been 2 days trying to fix it but I can't figure it out, help me.

   public ProductForm()
    {
        InitializeComponent();
    }
    SqlConnection Con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\solta\OneDrive\Documents\samarket.db.mdf;Integrated Security=True;Connect Timeout=30");
    private void ProductForm_Load(object sender, EventArgs e)
    {
        populate();
    }
    private void guna2DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        prodid.Text = prodDGV.SelectedRows[0].Cells[0].Value.ToString();
        prodnam.Text = prodDGV.SelectedRows[0].Cells[1].Value.ToString();
        prodqyan.Text = prodDGV.SelectedRows[0].Cells[2].Value.ToString();
        prodcat.Text = prodDGV.SelectedRows[0].Cells[3].Value.ToString();
        prodprix.Text = prodDGV.SelectedRows[0].Cells[4].Value.ToString();
    }
    public byte[] ImageToByteArray(Image img)
    {
        MemoryStream ms = new MemoryStream();
            img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
            return ms.ToArray();
    }
    public Image byteArrayToImage(byte[] byteArrayIn)
    {
        using (MemoryStream ms = new MemoryStream(byteArrayIn))
        { 
            return Image.FromStream(ms);
        }
    }
    private void button4_Click(object sender, EventArgs e)
    {
        try
        {
            bool isNullOrEmpty = pictur2 == null || pictur2.Image == null;
            if (prodid.Text == "" || prodnam.Text == "" || prodqyan.Text == ""|| isNullOrEmpty)
            {
                MessageBox.Show("information manquante");
            }
            else 
            {
                Con.Open();
             string query = "insert into ProductTbl values (" + prodid.Text + ",'" + prodnam.Text.ToString() + "','" + prodqyan.Text + "','"+prodcat.SelectedValue.ToString()+ "','" + prodprix.Text + "',@IM'"+ImageToByteArray(pictur2.Image)+  "')";
                SqlCommand cmd = new SqlCommand(query, Con);
             cmd.Parameters.AddWithValue("@IM", ImageToByteArray(pictur2.Image));
             cmd.ExecuteNonQuery();
             MessageBox.Show("produit ajoutée avec succès");
             Con.Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            Con.Close();
        }
    }   

    private void button5_Click(object sender, EventArgs e)
    {
        try
        {
            bool isNullOrEmpty = pictur2 == null || pictur2.Image == null;
            if (prodid.Text == "" || prodnam.Text == ""|| prodqyan.Text ==""||prodid.Text =="" || isNullOrEmpty)
            {
                MessageBox.Show("information manquante");
            }
            else
            {
                Con.Open();
                string query = "update ProductTbl set Nom ='" + prodnam.Text + "',Quantité='" + prodqyan.Text + "',Categorie ='" + prodcat.SelectedValue.ToString() + "',Prix='" + prodprix.Text+ "',Image='" + ImageToByteArray(pictur2.Image) + "'where Id =" + prodid.Text + ";";
                DataTable dt = new DataTable("ProductTbl");
                SqlCommand cmd = new SqlCommand(query, Con);
                cmd.ExecuteNonQuery();
                MessageBox.Show("produit modifier avec succès");
                Con.Close();
                populate();
            }
        }
        catch (Exception ex)
        {
            Con.Close();
            MessageBox.Show(ex.Message);
        }
    }
    private void populate()
    {
        Con.Open();
        string query = "select Id,Nom,Quantité,Categorie,Prix,Image from ProductTbl ";
        DataTable dt = new DataTable("ProductTbl");
        SqlDataAdapter sda = new SqlDataAdapter(query, Con);
        sda.Fill(dt);
        prodDGV.RowTemplate.Height = 90;
        prodDGV.DataSource = dt;
        Con.Close();
    }
    private void button6_Click(object sender, EventArgs e)
    {
        try
        {
            if (prodid.Text == "")
            {
                MessageBox.Show("Sélectionner la produit à supprimer");
            }
            else
            {
                Con.Open();
                string query = "delete  from  ProductTbl where Id =" + prodid.Text + "";
                SqlCommand cmd = new SqlCommand(query, Con);
                cmd.ExecuteNonQuery();
                MessageBox.Show("produit suppremer avec succès");
                Con.Close();
                populate();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
            Con.Close();
        }
    }
    private void prodcat1_SelectedIndexChanged(object sender, EventArgs e)
    {   
    }
    private void button7_Click(object sender, EventArgs e)
    {
        Con.Open(); 
        string query = "select Id,Nom,Quantité,Categorie,Prix,Image  from ProductTbl where Categorie ='" + prodcat1.SelectedValue.ToString() +"'";
        SqlDataAdapter sda = new SqlDataAdapter(query, Con);
        SqlCommandBuilder builder = new SqlCommandBuilder(sda);
        var ds = new DataSet();
        sda.Fill(ds);
        prodDGV.DataSource = ds.Tables[0];
        Con.Close();
    }
    private void button3_Click(object sender, EventArgs e)
    {
       using( OpenFileDialog ofd = new OpenFileDialog() { Filter ="Image files(*.png)|*.png",Multiselect = false }) 
        {
        if(ofd.ShowDialog() == DialogResult.OK) 
            {
            pictur2.Image=Image.FromFile(ofd.FileName);
            }
        }  
    }
    private void prodDGV_CellContentClick_1(object sender, DataGridViewCellEventArgs e)
    {
        prodid.Text = prodDGV.SelectedRows[0].Cells[0].Value.ToString();
        prodnam.Text = prodDGV.SelectedRows[0].Cells[1].Value.ToString();
        prodqyan.Text = prodDGV.SelectedRows[0].Cells[2].Value.ToString();
        prodprix.Text = prodDGV.SelectedRows[0].Cells[4].Value.ToString();
        DataTable dt = prodDGV.DataSource as DataTable;            
        DataRow row = dt.Rows[e.RowIndex];
        pictur2.Image = byteArrayToImage((byte[])row["Image"]); 
    }
}
0 Answers
Related