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

C# Discussion :

C# Mettre à jour une base de données SQL SERVER à partir d'un Datagrid [Débutant]


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour les amis ,

    Je rencontre des difficultés avec une partie de mon application, celle de modifier la table Etudiant directement depuis mon datagrid.

    Sachant que j'arrive à afficher les entrées de la base de données sur mon Datagrid lorsque je clique sur un menu item : (voici le code de cet événement)


    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
     
     private void MenuItem_Click_14(object sender, RoutedEventArgs e)
            {
     
     
     
     
                if (MainWindow.flag == true) // mode connecté 
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "listeetudiant"; // procédure stockée
                    cmd.Connection = connexion;
                    SqlDataReader dr = cmd.ExecuteReader();
                    dtm.Load(dr);                            
                    dataGrid2.ItemsSource = dtm.DefaultView;
                    label1.Content = "Etudiant:";
                    MessageBox.Show("connecté");
     
     
     
     
                }
                else if (MainWindow.flag == false)
                {
     
                    dataGrid2.ItemsSource = ds.Tables["Etudiant"].DefaultView;
                    label1.Content = "Etudiant:";
                    MessageBox.Show("déconnecté");
     
     
                }
     
     
     
            }
    Jusqu'ici tout se passe très bien, maintenant lorsque je double clique sur une entrée et je la modifie, je clique sur le bouton Enregistrer et le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     private void button7_Click(object sender, RoutedEventArgs e)
            {
     
     
     
                    da.Update(ds,"Etudiant");
     
     
            }
    Losrque j'exécute ça me fait une erreur :
    La référence d'objet n'est pas définie à une instance d'un objet.
    et la ligne da.Update(ds,"Etudiant"); devient jaune.

    NB : da ( dataadapter ) et ds ( Dataset) sont déclarées globales.

    Votre aide m'aidera énormément, merci D'avance

    Edit
    Salut ,
    le truc c'est de modifier directement sur le datagrid et cliquer sur enregistrer pour enregistrer sur la base de données les nouvelles valeurs saisies.

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par vaio25 Voir le message
    Losrque j'exécute ça me fait une erreur : La référence d'objet n'est pas définie à une instance d'un objet. et la ligne da.Update(ds,"Etudiant"); devient jaune.
    A priori tu as oublié d'initialiser da, qui vaut donc null

    Citation Envoyé par vaio25 Voir le message
    NB : da ( dataadapter ) et ds ( Dataset) sont déclarées globales.
    Il n'y a pas de variables globales en C#... Montre exactement où et comment tu les as déclarées.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonjour tomlev ,

    Voilà les 2 variables da et ds sont déclarées comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    namespace WpfApplication3
    {
        /// <summary>
        /// Interaction logic for UserControl1.xaml
        /// </summary>
        public partial class UserControl1 : UserControl
        {
     DataSet ds=new DataSet();
     
     
            SqlDataAdapter da ;
     
       }
    Je suis d'accord avec toi sur da , il est surement vide et je tente d'accéder à sa méthode Update.

    Je pense aussi que je dois mettre un da.fill() quelque part !

    Excusez ,je suis un peu novice .

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 754
    Points
    39 754
    Par défaut
    Citation Envoyé par vaio25 Voir le message
    Je suis d'accord avec toi sur da , il est surement vide
    Oui, il faut donc l'initialiser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    da = new SqlDataAdapter("SELECT * FROM UneTable", connection)
    Regarde ce cours pour plus d'explications
    http://dotnet.developpez.com/articles/ado2/csharp/

    Citation Envoyé par vaio25 Voir le message
    Je pense aussi que je dois mettre un da.fill() quelque part !
    Pas obligatoirement, tu peux charger les données comme tu as fait avec SqlDataReader ; mais en général c'est plus pratique avec le DataAdapter, et si tu l'utilise pour la mise à jour, autant l'utiliser aussi pour le chargement.

    C'est aussi expliqué dans le cours que je t'ai indiqué

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/04/2013, 00h32
  2. Réponses: 1
    Dernier message: 18/09/2011, 01h55
  3. Réponses: 2
    Dernier message: 27/04/2007, 13h45
  4. Réponses: 1
    Dernier message: 15/09/2006, 11h24
  5. [SQL SERVER] Mettre à jour une base de donnée
    Par grellierj dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 24/05/2006, 11h33

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