none
SQLCE Enregistrer une photo dans une DB RRS feed

  • Question

  • Salut tout le monde.

    J'arrive pas a retrouver comment enregistrer une photo dans un base de données SqlCE

    Je charge cette photo de cette facon dans le form.

    private void OpenImg(object sender, EventArgs e) { ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures); ofd.Filter = "JPEGs|*.jpg"; if (ofd.ShowDialog(this) == DialogResult.OK) { FileName = ofd.FileName; img1.Image = Image.FromFile(FileName); } }

      Puis je l'enregistre de cette facon(Que jai trouver sur le net) C est ma class et photo est dans la déclaration

     C.photo = C.imageToByteArray(Image.FromFile(ofd.FileName));

    pour la relire cette photo dans ma base de données ca fontionne pas avec le code suivant

    private void LoadDataForUpdate()
            {
                lblID.Text = dgvData.CurrentRow.Cells[0].Value.ToString(); ;
                t1.Text = dgvData.CurrentRow.Cells[1].Value.ToString();
                t2.Text = dgvData.CurrentRow.Cells[2].Value.ToString();
                t3.Text = dgvData.CurrentRow.Cells[3].Value.ToString();
                t4.Text = dgvData.CurrentRow.Cells[4].Value.ToString();
                t5.Text = dgvData.CurrentRow.Cells[5].Value.ToString();
                t6.Text = dgvData.CurrentRow.Cells[6].Value.ToString();
                t7.Text = dgvData.CurrentRow.Cells[7].Value.ToString();
                t8.Text = dgvData.CurrentRow.Cells[8].Value.ToString();
                t9.Text = dgvData.CurrentRow.Cells[9].Value.ToString();
                t10.Text = dgvData.CurrentRow.Cells[10].Value.ToString(); 
                img1.Image = C.byteArrayToImage(C.photo);

    Je sens que ce n'est pas la bonne façon de faire EST-CE que l'on peut m'aider avec ce problème

    Je pourrait y mettre tout le code mais ca risque d'être long sur cette page.


    Daniel


    samedi 10 janvier 2015 21:49

Réponses

  • Salut tout le monde

    J'ai finalement trouver comment faire mais par hasard

            
         /* Charger dans la datagridview Dans le Form_Load */
    
            SqlCeDataAdapter dta;
            DataSet dts = new DataSet();
            SqlCeConnection cn = new SqlCeConnection(ConnectString());
            if (cn.State == ConnectionState.Closed)
            {
                cn.Open();
            }
            dts = new DataSet();
            String sql = "Select * From Data ORDER by Id ASC";
            dta = new SqlCeDataAdapter(sql, cn);
            dta.Fill(dts, "Data");
            D.DataSource = dts.Tables["Data"];
            D.Columns[0].Visible = false;
            D.Columns[1].Visible = true;
            D.Columns[2].Visible = true;
            D.Columns[3].Visible = false;
            D.Columns[4].Visible = false;
            D.Columns[5].Visible = false;
            D.Columns[6].Visible = false;
            D.Columns[7].Visible = false;
            D.Columns[8].Visible = true;
            D.Columns[9].Visible = true;
            D.Columns[10].Visible = true;
            D.Columns[11].Visible = false;
            cn.Close();
             
           /* Ajouter l'image a pictureBox */
    
            ofd.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.CommonPictures);
                ofd.Filter = "JPEGs|*.jpg";
                if (ofd.ShowDialog(this) == DialogResult.OK)
                {
                    img1.Image = Image.FromFile(ofd.FileName);
                    C.FileName = ofd.FileName;
                }
            
            /* Charger dans la picturebox */
             
            using (SqlCeConnection cn = new SqlCeConnection(C.ConnectString()))
                {
                    using (SqlCeCommand cmd = new SqlCeCommand("SELECT Photo FROM Data WHERE Id=" + lblID.Text, cn))
                    {
                        if (cn.State == ConnectionState.Closed) { cn.Open(); }
                        byte[] imageData = (byte[])cmd.ExecuteScalar();
                        if ((imageData != null))
                        {
                            using (MemoryStream ms = new MemoryStream(imageData, 0, imageData.Length))
                            { ms.Write(imageData, 0, imageData.Length); img1.Image = Image.FromStream(ms, true); }
                        }
                    } cn.Close();
                }

    J'ai placer seulement le code car prendrais trop de place pour y placer le code complet des classe mais si cela peut données des idées sur le fonctionnement

    Merci encore


    Daniel

    • Marqué comme réponse DanielMorais samedi 17 janvier 2015 00:54
    samedi 17 janvier 2015 00:52