IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Probleme insertion Image dans la base de données sql server 2008


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Mai 2013
    Messages
    128
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 128
    Points : 56
    Points
    56
    Par défaut Probleme insertion Image dans la base de données sql server 2008
    Bonjour tout le monde ,

    je voudrais faire une mise a jour d'une table Image avec le mode deconecté en c# j'ai un probleme dans le cas de l'image j'ai une valeur null il veut pas inserer l'image que je l'affecte
    quand je clique sur le boutton add
    il me donne l'erreur suivante :
    Impossible d'effectuer un cast d'un objet de type 'System.DBNull' en type 'System.Byte[]'.
    a la ligne byte[] b = (byte[])e.Value;
    Nom : Capture.PNG
Affichages : 306
Taille : 42,6 Ko

    ce que je comprends que l'image toujours ca valeur est null je sais pas pourquoi
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     string Query;
            SqlDataAdapter dataadapter;
            DataSet dataset = new DataSet();
            OpenFileDialog dialog = new OpenFileDialog();
            BindingSource tblname = new BindingSource();
     
     
            private void la_Load(object sender, EventArgs e)
            {
     
         Query = "select * from Imagee ";
                dataadapter = new SqlDataAdapter(Query, Connexion.cnx);
                dataadapter.Fill(dataset,"Timage");
     
     
     
              textBox1.DataBindings.Add(new Binding("Text", dataset, "Timage.Id"));
     
              Binding b = new Binding("Image", dataset, "Timage.imagee");
     
              b.Format += new ConvertEventHandler(b_Format);
              pictureBox1.DataBindings.Add(b);
     
                dataGridView1.DataMember = "Timage";
                dataGridView1.DataSource = dataset;
     
            }
            private void b_Format(object sender, ConvertEventArgs e)
            {
     
                    byte[] b = (byte[])e.Value;
                    System.IO.MemoryStream ms = new System.IO.MemoryStream(b);
     
                    Bitmap bmp = new Bitmap(ms);
     
                    ms.Close();
     
                    e.Value = bmp;
     
            }
            private void Browse_Click(object sender, EventArgs e)
            {
     
                dialog.Filter = "JPEG|*.jpg";
                if (dialog.ShowDialog() == DialogResult.OK)
                {
     
                    Image image = Image.FromFile(dialog.FileName);
     
                    pictureBox1.Image = image;
                }
            }
     
            private void buttonAdd_Click(object sender, EventArgs e)
            {
                this.BindingContext[dataset, "Timage"].AddNew();
     
                //SqlCommandBuilder sql = new SqlCommandBuilder(dataadapter);
                //dataadapter.Update(dataset, "Timage");
     
     
     
            }
    Ps : je sais que le mode déconnecté il est préférable de l'utiliser seulement a l'affichage mais mois je me prépare pour un autre projet qui contient plusieurs champs si je le fai en mode connecté c'est beaucoup plus trop

  2. #2
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 059
    Points
    1 059
    Billets dans le blog
    1
    Par défaut
    Salut juste une question.La colonne de table qui représente l'image est de quel type.En principe elle doit être de type varbinary.J ' ai déjà fait un truc de ce genre et ça marchait bien.Vois ce lien http://dotnet.developpez.com/faq/csharp/?page=GDIplus

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est une mauvaise idée de stocker des fichiers dans une base de données. Il vaut mieux utiliser des technologies telles que FileStream (et/ou les File Tables, mais pas dispo sous SQL Server 2008). Ou alors le faire à l'ancienne et ne stocker que les metadata des fichiers en base.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 059
    Points
    1 059
    Billets dans le blog
    1
    Par défaut
    Tu pourrais aussi essayer le type BLOB(binary large Object) sous SQL Server

  5. #5
    Membre éprouvé
    Avatar de landry161
    Homme Profil pro
    C#,PHP,MySQL,Android...
    Inscrit en
    Juillet 2010
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : C#,PHP,MySQL,Android...

    Informations forums :
    Inscription : Juillet 2010
    Messages : 423
    Points : 1 059
    Points
    1 059
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par landry161 Voir le message
    Tu pourrais aussi essayer le type BLOB(binary large Object) sous SQL Server
    Zut une erreur de ma part

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/05/2015, 15h41
  2. Réponses: 1
    Dernier message: 18/09/2011, 01h55
  3. Insertion de fichiers dans une base de données sql server
    Par stefsas dans le forum Accès aux données
    Réponses: 1
    Dernier message: 30/06/2010, 20h22
  4. Réponses: 7
    Dernier message: 07/05/2009, 17h32
  5. Insertion dans une base de donnée SQL server 2005
    Par Je-cherche-pfe dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/09/2007, 13h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo