Looking for c# Answers? Try Ask4KnowledgeBase
Looking for c# Keywords? Try Ask4Keywords

C# Language Utilisation des instructions et des connexions à la base de données


Exemple

Le mot-clé using garantit que la ressource définie dans l'instruction existe uniquement dans la portée de l'instruction elle-même. Toutes les ressources définies dans l'instruction doivent implémenter l'interface IDisposable .

Celles-ci sont extrêmement importantes pour les connexions qui implémentent l'interface IDisposable , car elles permettent de garantir que les connexions sont non seulement correctement fermées mais que leurs ressources sont libérées après que l'instruction using est hors de portée.

Classes de données communes IDisposable

Bon nombre des éléments suivants sont des classes liées aux données qui implémentent l'interface IDisposable et sont des candidats parfaits pour une instruction using :

  • SqlConnection , SqlCommand , SqlDataReader , etc.
  • OleDbConnection , OleDbCommand , OleDbDataReader , etc.
  • MySqlConnection , MySqlCommand , MySqlDbDataReader , etc.
  • DbContext

Tous ces éléments sont couramment utilisés pour accéder aux données via C # et seront couramment rencontrés lors de la création d'applications centrées sur les données. De nombreuses autres classes non mentionnées qui implémentent les mêmes FooConnection , FooCommand , FooDataReader peuvent se comporter de la même manière.

Modèle d'accès commun pour les connexions ADO.NET

Un modèle commun pouvant être utilisé pour accéder à vos données via une connexion ADO.NET peut se présenter comme suit:

// This scopes the connection (your specific class may vary)
using(var connection = new SqlConnection("{your-connection-string}")
{
    // Build your query
    var query = "SELECT * FROM YourTable WHERE Property = @property");
    // Scope your command to execute
    using(var command = new SqlCommand(query, connection))
    {
         // Open your connection
         connection.Open();

         // Add your parameters here if necessary

         // Execute your query as a reader (again scoped with a using statement)
         using(var reader = command.ExecuteReader())
         {
               // Iterate through your results here
         }
    }
}

Ou si vous réalisiez une simple mise à jour et que vous n’avez pas besoin de lecteur, le même concept de base s’appliquerait:

using(var connection = new SqlConnection("{your-connection-string}"))
{
     var query = "UPDATE YourTable SET Property = Value WHERE Foo = @foo";
     using(var command = new SqlCommand(query,connection))
     {
          connection.Open();
          
          // Add parameters here
          
          // Perform your update
          command.ExecuteNonQuery();
     }
}

Utilisation des instructions avec DataContexts

De nombreux ORM, tels que Entity Framework, exposent des classes d'abstraction utilisées pour interagir avec les bases de données sous-jacentes sous la forme de classes telles que DbContext . Ces contextes implémentent généralement également l'interface IDisposable et devraient en tirer parti en using instructions lorsque cela est possible:

using(var context = new YourDbContext())
{
      // Access your context and perform your query
      var data = context.Widgets.ToList();
}