Le deuxième paramètre facultatif de la méthode GetSchema correspond aux restrictions destinées à limiter la quantité d’informations de schéma retournées ; il est passé à la méthode GetSchema sous la forme d’un tableau de chaînes. La position dans le tableau détermine les valeurs que vous pouvez passer et équivaut au numéro de restriction.
Par exemple, le tableau suivant décrit les restrictions prises en charge par la collection de schémas « Tables » en utilisant le fournisseur de données Microsoft SqlClient pour SQL Server. Des restrictions supplémentaires pour les collections de schémas SQL Server figurent à la fin de cette rubrique.
Nom de restriction
Nom du paramètre
Valeur par défaut de la restriction
Numéro de restriction
Catalogue
@Catalog
TABLE_CATALOG
1
Propriétaire
@Owner
TABLE_SCHEMA
2
Table de charge de travail
@Name
TABLE_NAME
3
TableType
@TableType
TABLE_TYPE
4
Spécification des valeurs de restriction
Pour utiliser l’une des restrictions de la collection de schémas « Tables », créez simplement un tableau de chaînes contenant quatre éléments, puis placez une valeur dans l’élément correspondant au numéro de restriction. Par exemple, pour limiter les tables retournées par la méthode GetSchema à celles du schéma « Sales » uniquement, définissez le deuxième élément du tableau sur « Sales » avant de le passer à la méthode GetSchema.
Notes
Les collections de restrictions pour SqlClient présentent une colonne ParameterName supplémentaire. La colonne par défaut de la restriction est encore là pour la compatibilité ascendante, mais est désormais ignorée. Les requêtes paramétrables plutôt que le remplacement de chaîne doivent être utilisées pour réduire le risque d’attaque par injection SQL lors de la spécification de valeurs de restriction.
Le nombre d'éléments du tableau doit être inférieur ou égal au nombre de restrictions prises en charge pour la collection de schémas spécifiée, sans quoi une exception ArgumentException est levée. Il peut y avoir moins de restrictions que le nombre maximal de restrictions. Les restrictions manquantes sont supposées avoir la valeur null (aucune restriction).
Vous pouvez interroger le fournisseur de données Microsoft SqlClient pour SQL Server pour établir la liste des restrictions prises en charge en appelant la méthode GetSchema avec le nom de la collection de schémas de restrictions, « Restrictions ». Cette opération retourne un DataTable contenant une liste des noms de collections, des noms de restriction, des valeurs de restriction par défaut et des numéros de restriction.
Exemple
Les exemples suivants montrent comment utiliser la méthode GetSchema de la classe SqlConnection du fournisseur de données Microsoft SqlClient pour SQL Server afin d’extraire les informations de schéma sur toutes les tables contenues dans l’exemple de base de données AdventureWorks et de limiter les informations retournées exclusivement aux tables du schéma « Sales » :
using System;
using System.Data;
using Microsoft.Data.SqlClient;
class Program
{
static void Main(string[] args)
{
string connectionString = "Data Source = localhost; Integrated Security = true; Initial Catalog = AdventureWorks";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
// Specify the restrictions.
string[] restrictions = new string[4];
restrictions[1] = "Sales";
System.Data.DataTable table = connection.GetSchema("Tables", restrictions);
// Display the contents of the table.
DisplayData(table);
Console.WriteLine("Press any key to continue.");
Console.ReadKey();
}
}
private static void DisplayData(System.Data.DataTable table)
{
foreach (System.Data.DataRow row in table.Rows)
{
foreach (System.Data.DataColumn col in table.Columns)
{
Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
}
Console.WriteLine("============================");
}
}
}
Restrictions de schéma SQL Server
Les tableaux suivants énumèrent les restrictions pour les collections de schémas SQL Server.