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 :

Execution INSERT procédure stockée


Sujet :

Windows Forms

  1. #1
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut Execution INSERT procédure stockée
    Salut!

    J'ai déjà travaillé sur l'exécution de procédures stockées avec ASP .NET mais seulement sur du SELECT et UPDATE, alors je me suis inspiré du code que j'avais déjà fait pour faire le INSERT mais ça ne fonctionne pas. Voilà un extrait du 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
                try
                {
                    using (SqlConnection connexion = CreerConnexion(connectionString))
                    {
                        SqlCommand commande = new SqlCommand();
    
                        commande.CommandType = System.Data.CommandType.StoredProcedure;
                        commande.CommandText = NomProcedure;
    
                        connexion.Open();
    
                        commande.Parameters.Add("@Param", System.Data.SqlDbType.Int, 11).Value = Entier;
    
                        DataSet Result = new DataSet();
                        commande.Connection.Open();
    
                        commande.ExecuteScalar();
    
                        
                        SqlDataAdapter Adapter = new SqlDataAdapter(commande);
                        Adapter.InsertCommand.CommandType = CommandType.StoredProcedure;
                        Adapter.InsertCommand.Connection = connexion;
    
                        Adapter.Fill(Result);
                        
                        return true;
                    }
                }
    et là il s'arrête sur la ligne en gras et me donne cette exception :

    La référence d'objet n'est pas définie à une instance d'un objet.

    Bon j'avoue j'ai un peu fait de la cuisine mais on faut comme on peut.

    J'ai d'autres questions :

    - A quoi me servirait le DataSet, j'en vois pas l'intérêt, pour un INSERT ou UPDATE en tout cas. Le DataSet sert seulement à récupérer des données faites grâce à un SELECT si j'ai bien compris.

    - On doit spécifier le type de commande, mais dans le cas ou la procédure fait plusieurs types d'opérations ? Ex quelques SELECT et INSERT, je suis censé mettre quel type ?

  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 : 43
    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
    Par défaut
    C'est parce que command.Connection est null. Utilise la connexion que tu viens d'ouvrir...
    Remplace la ligne en gras par celle là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    command.Connection = connexion

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Plutôt que de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande.Connection.Open();
    Je pense que tu devrais plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    commande.Connection = connexion;// pour lier ta commande à ta connexion
    Quand tu dis :
    Citation Envoyé par Aizen64
    - On doit spécifier le type de commande, mais dans le cas ou la procédure fait plusieurs types d'opérations ? Ex quelques SELECT et INSERT, je suis censé mettre quel type ?
    tu parles de CommandType ?
    Si c'est ça, et bien dans le cas d'une procédure stockée (ton cas) tu mets ce que tu as mis, c'est à dire "CommandType.StoredProcedure". Peu importe ce que tu fais dans la procédure en fait. Après il existe "CommandType.Text" dans le cas ou tu souhaites définir ta requête dans le code (en passant par une string).

    Pour le Dataset, en effet j'en vois pas l'intérêt pour l'insert.

    Une chose encore, je n'en suis pas certain mais ExecuteNonQuery() sera peut être plus adapté... Je ne sais pas si cela passe avec ExecuteScalar(), mais j'utilise généralement ce dernier pour retourner une valeur numérique lors d'un Select...

    Peut être que d'autres gérant mieux la partie accès aux données pourront te répondre plus précisément.

  4. #4
    Membre très actif Avatar de Aizen64
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 563
    Par défaut
    Apparemment ça fonctionne, sauf que j'ai encore une erreur sur les lignes en dessous sur le DataAdapter, mais de toute façon je n'en n'ai pas besoin puisque je ne remplis pas le DataSet non?

Discussions similaires

  1. [CR9 Oracle] Executer une procédure stockée depuis un rapport
    Par zodeno dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 26/03/2008, 14h39
  2. Réponses: 2
    Dernier message: 21/03/2008, 16h07
  3. executée une procédure stockée depuis access 97
    Par sandmil dans le forum Access
    Réponses: 1
    Dernier message: 12/07/2007, 11h51
  4. Execution de procédure stockée
    Par Tsimplice dans le forum SQL
    Réponses: 2
    Dernier message: 03/05/2007, 18h47
  5. Executer une procédure stockée à distance
    Par vvvvv dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/11/2006, 16h12

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