Chaînes de connexion dans ADO.NET

Une chaîne de connexion contient des informations d'initialisation qui sont passées en tant que paramètre d'un fournisseur de données à une source de données. Le fournisseur de données reçoit la chaîne de connexion en tant que valeur de la propriété DbConnection.ConnectionString. Le fournisseur analyse la chaîne de connexion et s’assure que la syntaxe est correcte et que les mots clés sont pris en charge. Ensuite, la méthode DbConnection.Open() transmet les paramètres de connexion analysés à la source de données. La source de données effectue une validation supplémentaire et établit une connexion.

Syntaxe de la chaîne de connexion

Une chaîne de connexion est une liste délimitée par des points-virgules de paires de paramètres clé/valeur :

keyword1=value; keyword2=value;

Les mots clés ne respectent pas la casse. Toutefois, les valeurs peuvent respecter la casse, en fonction de la source de données. Les mots clés et les valeurs peuvent contenir des caractères d’espaces blancs. Les espaces blancs de début et de fin sont ignorés dans les mots clés et les valeurs sans guillemets.

Si une valeur contient le point-virgule, les caractères de contrôle Unicode ou les espaces blancs de début ou de fin, elle doit être placée entre guillemets simples ou doubles. Par exemple :

Keyword=" whitespace  ";
Keyword='special;character';

Le caractère englobant peut ne pas se trouver dans la valeur qu’il englobe. Par conséquent, une valeur contenant des guillemets simples peut être placée entre guillemets doubles et vice versa :

Keyword='double"quotation;mark';
Keyword="single'quotation;mark";

Vous pouvez également échapper le caractère englobant à l’aide de deux d’entre eux :

Keyword="double""quotation";
Keyword='single''quotation';

Les guillemets eux-mêmes, ainsi que le signe égal, ne nécessitent pas d’échappement, donc les chaînes de connexion suivantes sont valides :

Keyword=no "escaping" 'required';
Keyword=a=b=c

Étant donné que chaque valeur est lue jusqu’au point-virgule suivant ou jusqu’à la fin de la chaîne, la valeur du dernier exemple est a=b=c, et le point-virgule final est facultatif.

Toutes les chaînes de connexion partagent la même syntaxe de base décrite ci-dessus. L’ensemble de mots clés reconnus dépend toutefois du fournisseur et a évolué au fil des ans par rapport aux API antérieures telles qu’ODBC. Le fournisseur de données .NET Framework pour SQL Server (SqlClient) prend en charge de nombreux mots clés d’anciennes API, mais il est généralement plus souple et accepte des synonymes pour un grand nombre de mots clés de chaîne de connexion courants.

Les erreurs de frappe peuvent entraîner des erreurs. Par exemple, Integrated Security=true est valide, tandis que IntegratedSecurity=true provoque une erreur.

Les chaînes de connexion générées manuellement au moment de l'exécution à partir d'une entrée utilisateur non validée peuvent entraîner des attaques par injection de chaîne, ce qui compromet la sécurité au niveau de la source de données. Pour résoudre ces problèmes, ADO.NET 2.0 a introduit de nouveaux générateurs de chaînes de connexion pour chaque fournisseur de données .NET Framework. Ces générateurs de chaînes de connexion exposent les paramètres en tant que propriétés fortement typées et permettent de valider la chaîne de connexion avant qu’elle ne soit envoyée à la source de données.

Dans cette section

Builders de chaînes de connexion
Montre comment utiliser les classes ConnectionStringBuilder pour générer des chaînes de connexion valides au moment de l'exécution.

Chaînes de connexion et fichiers config
Montre comment stocker et extraire des chaînes de connexion dans des fichiers de configuration.

Syntaxe de la chaîne de connexion
Décrit comment configurer des chaînes de connexion spécifiques au fournisseur pour SqlClient, OracleClient, OleDb et Odbc.

Protection des informations de connexion
Montre des techniques pour la protection des informations utilisées pour la connexion à une source de données.

Voir aussi