Partager via


Opérations ExecuteReader, ExecuteScalar ou ExecuteNonQuery dans SQL à l’aide du modèle de service WCF

L’adaptateur SQL expose des opérations de SQL Server génériques telles que ExecuteNonQuery, ExecuteReader et ExecuteScalar. Vous pouvez utiliser ces opérations pour exécuter n’importe quelle instruction SQL sur une base de données SQL Server. Ces opérations diffèrent en fonction du type de réponse que vous obtenez pour l’instruction SQL. Pour plus d’informations sur la façon dont l’adaptateur prend en charge ces opérations, consultez Prise en charge des opérations ExecuteNonQuery, ExecuteReader et ExecuteScalar.

Cette rubrique montre comment effectuer une opération ExecuteReader à l’aide de l’adaptateur SQL à l’aide du modèle de service WCF. Vous pouvez suivre le même ensemble de procédures décrit dans cette rubrique pour effectuer des opérations ExecuteNonQuery et ExecuteScalar .

À propos des exemples utilisés dans cette rubrique

L’exemple de cette rubrique utilise l’opération ExecuteReader pour exécuter la procédure stockée ADD_EMP_DETAILS. Cette procédure stockée ajoute un enregistrement à la table Employee et retourne l’ID d’employé pour l’enregistrement. La procédure stockée ADD_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_Reader, 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 appeler des opérations génériques (ExecuteNonQuery, ExecuteReader ou ExecuteScalar) à l’aide de l’adaptateur SQL est répertorié dans le tableau suivant.

Operations Nom du client WCF
ExecuteNonQuery, ExecuteReader ou ExecuteScalar GenericTableOpClient

Signature de méthode pour appeler des opérations génériques

Le tableau suivant montre la signature de la méthode exposée pour appeler les opérations génériques.

Opération Signature de méthode
ExecuteNonQuery int ExecuteNonQuery(string Query)
ExecuteReader System.Data.DataSet[] ExecuteReader(string Query)
ExecuteScalar string ExecuteScalar(string Query)

Par exemple, la signature des méthodes d’opération génériques est illustrée dans l’extrait de code suivant.

public partial class GenericTableOpClient : System.ServiceModel.ClientBase<GenericTableOp>, GenericTableOp {  
  public int ExecuteNonQuery(string Query);  
  public System.Data.DataSet[] ExecuteReader(string Query);  
  public string ExecuteScalar(string Query);  
}  

Dans cet extrait de code,

  • GenericTableOpClient est le nom de la classe . Dans cet exemple, vous utilisez cette classe pour créer un client afin d’appeler l’opération générique ExecuteReader.

  • public System.Data.DataSet[] ExecuteReader(string Query) est la méthode que vous appelez dans cet exemple pour appeler la procédure stockée ADD_EMP_DETAILS.

Création d’un client WCF pour appeler une opération ExecuteReader

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 canal WCF avec l’adaptateur SQL. Cette section décrit spécifiquement comment créer un client WCF qui appelle une opération ExecuteReader pour exécuter la procédure stockée ADD_EMP_DETAILS. Cette procédure stockée est créée en exécutant le script SQL fourni avec chaque exemple.

Pour créer un client WCF pour appeler l’opération ExecuteReader

  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 l’opération générique ExecuteReader . Cette opération est disponible sous le nœud racine lorsque vous vous connectez à la base de données SQL Server à l’aide du plug-in Add Adapter Service Reference. 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 Artifacts.

    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.

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

    Dans cet extrait de code, GenericTableOpClient est le client WCF défini dans SqlAdapterBindingClient.cs. Ce fichier est généré par le plug-in Add Adapter Service Reference. SqlAdapterBinding_GenericTableOp 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 Reference Service 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 de client, 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 l’opération ExecuteReader pour la procédure stockée ADD_EMP_DETAILS. Avant d’appeler l’opération ExecuteReader, vous devez ajouter l’espace System.Data de noms à votre code.

    string query = "EXEC ADD_EMP_DETAILS 'Tom Smith', 'Manager', 500000";  
    DataSet[] dsArray = client.ExecuteReader(query);  
    
    Console.WriteLine("Invoking the ADD_EMP_DETAILS stored procedure using ExecuteReader");  
    Console.WriteLine("*****************************************************");  
    foreach (DataSet dataSet in dsArray)  
    {  
       foreach (DataTable tab in dsArray[0].Tables)  
       {  
           foreach (DataRow row in tab.Rows)  
           {  
              for (int i = 0; i < tab.Columns.Count; i++)  
              {  
                 Console.WriteLine("The ID for the newly added employee is : " + 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. L’ID d’employé du nouvel employé est affiché dans la console.