Partager via


Appeler des procédures stockées faiblement typées dans SQL à l’aide du modèle de service WCF

Lorsque vous appelez une procédure répertoriée sous le nœud Procédures dans le plug-in Add Adapter Service Reference, la sortie se présente sous la forme d’un tableau DataSet. Cette rubrique fournit des instructions sur la création d’un client WCF pour appeler une procédure stockée dans SQL Server qui retourne un tableau DataSet.

Notes

Si vous effectuez une opération sur des tables qui ont des colonnes de types définis par l’utilisateur, veillez à faire référence à Operations on Tables and Views with User-Defined Types à l’aide de l’adaptateur SQL avant de commencer à développer votre application.

À propos des exemples utilisés dans cette rubrique

L’exemple de cette rubrique utilise la procédure stockée GET_EMP_DETAILS. Cette procédure stockée prend un ID d’employé comme paramètre d’entrée et retourne toutes les colonnes correspondantes pour l’employé avec cet ID. La procédure stockée GET_EMP_DETAILS est créée en exécutant le script SQL fourni avec les exemples. Pour plus d’informations sur les exemples, consultez Exemples d’adaptateurs. Un exemple, Execute_StoredProc, basé sur cette rubrique, est également fourni avec les exemples d’adaptateur SQL.

Classe de client WCF

Le nom du client WCF généré pour l’appel de procédures stockées sous le nœud Procédures à l’aide de l’adaptateur SQL est répertorié dans le tableau suivant.

artefact de base de données SQL Server Nom du client WCF
Procédure (sous le nœud Procédures ) Procedures_[schéma]Client

[schéma] est le schéma auquel appartient la procédure ; par exemple « dbo ».

Signature de méthode pour l’appel de procédures stockées

Le tableau suivant montre la signature de la méthode exposée pour appeler les procédures stockées.

Opération Signature de méthode
Nom de la procédure System.Data.DataSet[] [procedure_name](param1, param2, ...)

[procedure_name] est le nom de la procédure ; par exemple, GET_EMP_DETAILS

Par exemple, la signature de la méthode pour appeler la procédure GET_EMP_DETAILS est illustrée dans l’extrait de code suivant.

public partial class Procedures_dboClient : System.ServiceModel.ClientBase<Procedures_dbo>, Procedures_dbo {  
  public System.Data.DataSet[] GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue);  
}  

Dans cet extrait de code,

  • Procedures_dboClient est le nom de la classe de client WCF. Dans cet exemple, vous utilisez cette classe pour créer un client afin d’appeler la procédure stockée.

  • public System.Data.DataSet[] GET_EMP_DETAILS(System.Nullable<int> emp_id, out int ReturnValue) est la méthode que vous appelez dans cet exemple pour appeler la procédure stockée. Cette procédure stockée prend un ID d’employé et retourne un tableau DataSet.

Créer un client WCF pour appeler une procédure stockée dans SQL Server

L’ensemble générique d’actions requis pour effectuer une opération sur SQL Server à l’aide d’un client WCF implique un ensemble de tâches décrites dans Vue d’ensemble du modèle de service WCF avec l’adaptateur. Cette section explique spécifiquement comment créer un client WCF qui appelle une procédure stockée, le jeu de résultats pour lequel est un tableau DataSet. Dans cette rubrique, à titre d’exemple, vous appelez la procédure stockée GET_EMP_DETAILS. Cette procédure stockée est créée en exécutant le script SQL fourni avec chaque exemple.

  1. Créez un projet Visual C# dans Visual Studio. Pour cette rubrique, créez une application console.

  2. Générez la classe de client WCF pour la procédure stockée GET_EMP_DETAILS. Veillez à sélectionner la procédure sous le nœud Procédures . Pour plus d’informations sur la génération d’une classe de client WCF, consultez Générer un client WCF ou un contrat de service WCF pour SQL Server Artefacts.

    Important

    Avant de générer la classe de client WCF, veillez à définir la propriété de liaison EnableBizTalkCompatibilityMode sur false.

  3. Dans le Explorateur de solutions, ajoutez une référence à Microsoft.Adapters.Sql et Microsoft.ServiceModel.Channels.

  4. Ouvrez le fichier Program.cs et créez un client comme décrit dans l’extrait de code ci-dessous.

    
              Procedures_dboClient client = new Procedures_dboClient("SqlAdapterBinding_Procedures_dbo");  
    
    client.ClientCredentials.UserName.UserName = "<Enter username here>";  
    client.ClientCredentials.UserName.Password = "<Enter password here>";  
    

    Dans cet extrait de code, Procedures_dboClient est le client WCF défini dans SqlAdapterBindingClient.cs. Ce fichier est généré par le plug-in Add Adapter Service Reference. SqlAdapterBinding_Procedures_dbo est le nom de la configuration du point de terminaison client et est défini dans le app.config. Ce fichier est également généré par le plug-in Add Adapter Service Reference et contient les propriétés de liaison et d’autres paramètres de configuration.

    Notes

    Dans cet extrait de code, vous utilisez la liaison et l’adresse de point de terminaison du fichier de configuration. Vous pouvez également spécifier explicitement ces valeurs dans votre code. Pour plus d’informations sur les différentes façons de spécifier la liaison cliente, consultez Configurer une liaison cliente pour l’adaptateur SQL.

  5. Ouvrez le client comme décrit dans l’extrait de code ci-dessous :

    try  
    {  
       Console.WriteLine("Opening Client...");  
       client.Open();  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    
  6. Appelez la procédure stockée GET_EMP_DETAILS. Avant d’appeler la procédure GET_EMP_DETAILS, vous devez ajouter l’espace de System.Data noms à votre code.

    DataSet[] dataArray;  
    int returnCode;  
    
    try  
    {  
       Console.WriteLine("Calling a stored procedure...");  
       dataArray = client.GET_EMP_DETAILS(10001, out returnCode);  //Invoke the stored procedure  
    }  
    catch (Exception ex)  
    {  
       Console.WriteLine("Exception: " + ex.Message);  
       throw;  
    }  
    Console.WriteLine("The details for the employee with ID '10001' are:");  
    Console.WriteLine("*************************************************");  
    
    foreach (DataSet dataSet in dataArray)  
    {  
       foreach (DataTable tab in dataArray[0].Tables)  
       {  
          foreach (DataRow row in tab.Rows)  
          {  
             for (int i = 0; i < tab.Columns.Count; i++)  
             {  
                Console.WriteLine(row[i]);  
             }  
          }  
       }  
    }  
    Console.WriteLine("*************************************************");  
    
    
  7. Fermez le client comme décrit dans l’extrait de code ci-dessous :

    client.Close();  
    Console.WriteLine("Press any key to exit...");  
    Console.ReadLine();  
    
  8. Générez le projet, puis exécutez-le. Les détails de l’employé, pour lequel vous pr

  9. l’ID est affiché sur la console.

Voir aussi

Développer des applications en utilisant le modèle de service WCF