Procédure pas à pas : mise à jour d'enregistrements à l'aide des procédures stockées

 

Pour obtenir la dernière documentation sur Visual Studio 2017, consultez Documentation Visual Studio 2017.

Vous ne pouvez pas appeler une procédure stockée dans une base de données SQL Server directement à partir de LightSwitch, mais vous pouvez créer une table locale dans votre application LightSwitch qui contient les paramètres requis pour la procédure stockée, puis appeler la procédure stockée à partir d'un événement de la couche serveur. Cette procédure pas à pas montre comment insérer des enregistrements de clients dans une base de données SQL à l'aide de procédures stockées.

De nombreux administrateurs de base de données n'autorisent pas l'accès direct aux tables ; ils préfèrent exposer des vues en lecture seule et fournir des procédures stockées pour insérer, mettre à jour et supprimer des enregistrements. LightSwitch ne reconnaît pas les procédures stockées, donc toute base de données qui s'appuie sur des procédures stockées pour mettre à jour des enregistrements peut sembler inutilisable au premier abord. Mais avec un peu d'efforts, vous pouvez utiliser ces bases de données à partir de LightSwitch.

Cette procédure pas à pas utilise l'exemple de base de données Northwind.

Dans la plupart des cas, vous allez accéder à des procédures stockées qui existent déjà dans une base de données. La base de données Northwind n'a pas la procédure stockée nécessaire pour insérer des enregistrements client, donc vous devez l'ajouter.

Pour ajouter une procédure stockée

  1. Dans la barre de menus, choisissez Affichage, Explorateur d'objets SQL Server.

  2. Dans la fenêtre Explorateur d'objets SQL Server, développez le nœud de la base de données NORTHWIND, puis choisissez Programmabilité.

  3. Développez le nœud Programmabilité, puis choisissez Procédures stockées.

  4. Ouvrez le menu contextuel de Procédures stockées, puis choisissez Ajouter une nouvelle procédure stockée.

  5. Dans l'Éditeur de code, remplacez le contenu par le code Transact-SQL suivant, puis choisissez le bouton Mettre à jour.

    CREATE Procedure [dbo].[InsertCustomer]  
        @CustomerID nchar(5),  
        @CompanyName nvarchar(40),  
        @ContactName nvarchar(30),  
        @ContactTitle nvarchar(30),  
        @Address nvarchar(60),  
        @City nvarchar(15),  
        @Region nvarchar(15),  
        @PostalCode nvarchar(10),  
        @Country nvarchar(15),  
        @Phone nvarchar(24),  
        @Fax nvarchar(24)  
    AS  
    INSERT INTO [dbo].[Customers]  
               ([CustomerID]  
               ,[CompanyName]  
               ,[ContactName]  
               ,[ContactTitle]  
               ,[Address]  
               ,[City]  
               ,[Region]  
               ,[PostalCode]  
               ,[Country]  
               ,[Phone]  
               ,[Fax])  
         VALUES  
               (@CustomerID  
               ,@CompanyName  
               ,@ContactName  
               ,@ContactTitle  
               ,@Address  
               ,@City  
               ,@Region  
               ,@PostalCode  
               ,@Country  
               ,@Phone  
               ,@Fax)  
    
    
  6. Dans la boîte de dialogue Aperçu des mises à jour de la base de données, choisissez le bouton Mettre à jour la base de données.

    La procédure stockée InsertCustomer est ajoutée à la base de données.

Au cours de cette étape, vous allez créer une application pour appeler la procédure stockée et ajouter de nouveaux clients à la base de données Northwind.

Pour créer l'application

  1. Dans la barre de menus, sélectionnez Fichier, Nouveau, Projet.

  2. Dans la boîte de dialogue Nouveau projet, développez le nœud Visual Basic ou Visual C#, puis choisissez le modèle Application HTML LightSwitch.

  3. Dans la zone de texte Nom, entrez NorthwindSP, puis choisissez le bouton OK.

Pour ajouter une source de données

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud Sources de données, puis choisissez Ajouter une source de données.

  2. Dans l'Assistant Attacher une source de données, choisissez Base de données, puis choisissez le bouton Suivant.

  3. Dans la boîte de dialogue Propriétés de connexion, entrez les détails de connexion de votre base de données Northwind, puis choisissez le bouton OK.

  4. Dans la page Choisir vos objets de base de données, développez le nœud Tables, cochez la case Customers, puis choisissez le bouton Terminer.

Pour ajouter une table locale

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud Sources de données, puis choisissez Ajouter une table.

  2. Dans la fenêtre Propriétés, choisissez la propriété Nom, puis entrez NewCustomer.

  3. Dans Entity Designer, ajoutez les champs suivants :

    NomTypeObligatoire
    CustomerIDChaîneOui
    CompanyNameChaîneOui
    ContactNameChaîneOui
    ContactTitleChaîneOui
    AddressChaîneOui
    CityChaîneOui
    RegionChaîneOui
    PostalCodeChaîneOui
    CountryChaîneOui
    TéléphoneNuméro de téléphoneOui
    FaxNuméro de téléphoneOui

    Notez que tous les champs sont obligatoires. En effet, tous les paramètres de la procédure stockée requièrent des valeurs. Notez également que le type de données des champs Phone et Fax est Phone Number. Même s'ils sont stockés dans la base de données en tant que nvarchar, vous pouvez exploiter les types d'entreprise personnalisés de LightSwitch sur la couche client.

Pour ajouter un écran

  1. Dans Entity Designer, dans la barre Perspective, choisissez HTMLClient.

  2. Dans Barre d'outils, choisissez le bouton Écran.

  3. Dans la boîte de dialogue Ajouter un nouvel écran, choisissez le modèle Jeu d'écrans commun, puis dans la zone de texte Nom de jeu d'écrans, entrez Customers et dans la liste Données d'écran, choisissez NewCustomer, puis choisissez le bouton OK.

Pour appeler la procédure stockée

  1. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud NorthwindSP.Server, puis choisissez Ajouter, Référence.

  2. Dans la boîte de dialogue Ajouter une référence, cochez la case System.Configuration, puis choisissez le bouton OK.

  3. Dans l'Explorateur de solutions, ouvrez le menu contextuel du nœud NewCustomer.lsml, puis choisissez Ouvrir.

  4. Dans Entity Designer, dans la barre Perspective, choisissez Serveur.

  5. Dans la Barre d'outils, développez la liste Écrire le code et choisissez NewCustomers_Inserting.

  6. Dans l'éditeur de code, remplacez le code existant par le code suivant :

    using Microsoft.VisualBasic;  
    using System;  
    using System.Collections;  
    using System.Collections.Generic;  
    using System.Data;  
    using System.Diagnostics;  
    using System.Configuration;  
    using System.Data.SqlClient;  
    namespace LightSwitchApplication  
    {  
    
    public class ApplicationDataService  
    {  
    
    private void NewCustomers_Inserting(NewCustomer entity)  
    {  
    using (connection == new SqlConnection()) {  
    dynamic connectionStringName = this.DataWorkspace.NorthwindData.Details.Name;  
    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString;  
    
    dynamic procedure = "dbo.InsertCustomer";  
    using (command == new SqlCommand(procedure, connection)) {  
    command.CommandType = CommandType.StoredProcedure;  
    
    command.Parameters.Add(new SqlParameter("@CustomerID", entity.CustomerID));  
    command.Parameters.Add(new SqlParameter("@CompanyName", entity.CompanyName));  
    command.Parameters.Add(new SqlParameter("@ContactName", entity.ContactName));  
    command.Parameters.Add(new SqlParameter("@ContactTitle", entity.ContactTitle));  
    command.Parameters.Add(new SqlParameter("@Address", entity.Address));  
    command.Parameters.Add(new SqlParameter("@City", entity.City));  
    command.Parameters.Add(new SqlParameter("@Region", entity.Region));  
    command.Parameters.Add(new SqlParameter("@PostalCode", entity.PostalCode));  
    command.Parameters.Add(new SqlParameter("@Country", entity.Country));  
    command.Parameters.Add(new SqlParameter("@Phone", entity.Phone));  
    command.Parameters.Add(new SqlParameter("@Fax", entity.Fax));  
    
    connection.Open();  
    command.ExecuteNonQuery();  
    }  
    
    }  
    }  
    }  
    
    }  
    
    
    

    Quand un nouvel enregistrement est inséré dans la table NewCustomers, ce code s'exécute. Il permet d'ouvrir une connexion à la base de données Northwind et d'exécuter les procédures stockées InsertCustomer, puis de fournir les valeurs dans l'entité NewCustomer sous forme de paramètres à la procédure stockée.

Pour tester l'application

  1. Dans l'éditeur de code, définissez un point d'arrêt dans la méthode NewCustomers_Inserting.

  2. Exécutez l'application et dans l'écran CustomersSet, choisissez le bouton Ajouter.

  3. Dans l'écran Customers, renseignez tous les champs et choisissez le bouton Enregistrer.

    Notez que le point d'arrêt est atteint, ce qui démontre que le code fonctionne, puis appuyez sur F5 pour continuer. Si vous ouvrez la table Customers dans la base de données Northwind, votre nouvel enregistrement client est visible.

Vous pouvez créer votre logique métier et vos écrans LightSwitch comme d'habitude, puis élaborer rapidement et facilement une application fonctionnelle à l'aide de procédures stockées.

Comment : exécuter une procédure stockée dans LightSwitch
Données : les informations de votre application

Afficher: