Answered visual c# Express 2010 et sqlce

  • mercredi 27 juin 2012 01:10
     
      A du code

    Salut a tous

    Mon probleme est le suivant

    Je suis ariver a enregistrer une images dans une base de données SQLCE

    de cette facon

    static public void SaveToContacts(PictureBox pb)
            { 
                SqlCeConnection cn = new SqlCeConnection(ConnectString());
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();
                }
                SqlCeCommand cmd;
                sql = "insert into Contacts "
                    + "(Nom, Prenom, Photo) "
                    + "values (@nom, @prenom, @Photo)";
                cmd = new SqlCeCommand(sql, cn);
                cmd.Parameters.AddWithValue("@nom", Nom);
                cmd.Parameters.AddWithValue("@prenom", Prenom);
                ImageFormat value = default(ImageFormat);
                byte[] imageBytes = null;
                value = ImageFormat.Jpeg;
                MemoryStream ms = new MemoryStream();
                pb.Image.Save(ms, ImageFormat.Jpeg);
                imageBytes = ms.ToArray();
                cmd.Parameters.AddWithValue("@Photo", imageBytes);
                cmd.ExecuteNonQuery();
                cn.Close();
                cn = null;
            }

    mais pour la recuperer je trouve pas

    kkun a une petite idee la desus

    MERCI!


    Daniel


Toutes les réponses

  • mercredi 27 juin 2012 01:29
     
      A du code

    Salut a tous

    Mon probleme est le suivant

    Je suis ariver a enregistrer une images dans une base de données SQLCE

    de cette facon

    static public void SaveToContacts(PictureBox pb)
            { 
                SqlCeConnection cn = new SqlCeConnection(ConnectString());
                if (cn.State == ConnectionState.Closed)
                {
                    cn.Open();
                }
                SqlCeCommand cmd;
                sql = "insert into Contacts "
                    + "(Nom, Prenom, Photo) "
                    + "values (@nom, @prenom, @Photo)";
                cmd = new SqlCeCommand(sql, cn);
                cmd.Parameters.AddWithValue("@nom", Nom);
                cmd.Parameters.AddWithValue("@prenom", Prenom);
                ImageFormat value = default(ImageFormat);
                byte[] imageBytes = null;
                value = ImageFormat.Jpeg;
                MemoryStream ms = new MemoryStream();
                pb.Image.Save(ms, ImageFormat.Jpeg);
                imageBytes = ms.ToArray();
                cmd.Parameters.AddWithValue("@Photo", imageBytes);
                cmd.ExecuteNonQuery();
                cn.Close();
                cn = null;
            }

    mais pour la recuperer je trouve pas

    kkun a une petite idee la desus

    MERCI!


    Daniel

         en faite je la recupere de cette facon

       

     private void LoadData()
            {
                using (SqlCeConnection cn = new SqlCeConnection(M.ConnectString()))
                { 
                     cn.Open(); 
                        SqlCeDataAdapter dta;
                        DataSet dts;
                        dts = new DataSet();
                        String sql = "Select * From Contacts order by Nom ASC";
                        dta = new SqlCeDataAdapter(sql, cn);
                        dta.Fill(dts, "Contacts");
                        dgvContacts.DataSource = dts.Tables["Contacts"];
                       
                        cn.Close();
                }
            }

    mais je trouve pas comment placer la photo de la ligne selectionner dans la pictureBox de mon programme

    j'y arrive pour les donnée text mais pour les donnée images     La????????????.

    je m'explique la dessus

    lblID.Text = dgvContacts.SelectedRows[0].Cells["ID"].Value.ToString();
     t1.Text =  dgvContacts.SelectedRows[0].Cells["Nom"].Value.ToString();
     t2.Text = dgvContacts.SelectedRows[0].Cells["Prenom"].Value.ToString();
    picturebox2.Text= "???????????????????????????????????????????????????????????????";

    Voila je fait comment pour la photo

    Merci


    Daniel


  • jeudi 28 juin 2012 06:50
    Modérateur
     
      A du code

    Bonjour,

    Avez-vous essayé :

    picturebox.Image = dgvContacts.SelectedRows[0].Cells["Image"].Value;

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0

  • jeudi 28 juin 2012 10:37
     
     Traitée A du code

    Bonjour Gilles

    Oui j'ai essayer ca mais non, pas moyen mais j'ai trouver par hazar ce bout de code qui fait la job.

    byte[] data = (byte[])this.dgvContacts.SelectedRows[0].Cells["Photo"].Value;

    MemoryStream ms = new MemoryStream(data);

    Helper.Photo = Image.FromStream(ms);

    Le Helper est une class et photo est declarer dans la class

    Merci


    Daniel

  • jeudi 28 juin 2012 16:44
     
     

    Bonjour demarre une transaction

    SqlTransaction trans:

    trans = cn.BeginTransaction():

    cmd.Transaction = trans;

                                               Ta requete

    avant cn.Close();

    Faire trans.save(); ou trans.comit();

    Tout ira pour le mieux

    Merci

  • jeudi 28 juin 2012 16:47
     
     

    La premiere solution l'image est dans la BD tu peux l'appeler 

    picturebox.Image = dgvContacts.SelectedRows[0].Cells["Image"].Value;

    Ou dans ta BD met le chemin de l'image comme string et utilise le HTML, ASP ou ce que tu veux avec :

    imagesource = ".........."

    C'est plus simple

  • vendredi 29 juin 2012 07:27
    Modérateur
     
     Traitée A du code

    Bonjour,

    Préférez dans ce cas la méthode suivante :

    TypeDescriptor.GetConverter(typeof(Image)).ConvertFrom(dgvContacts.SelectedRows[0].Cells["Image"].Value);

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0