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 » utilisant le fournisseur de données .NET Framework pour SQL Server. Des restrictions supplémentaires pour les collections de schémas SQL Server figurent à la fin de cet article.
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
et OracleClient
comportent 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. Il convient d'utiliser des requêtes paramétrées plutôt qu'un remplacement de chaîne afin de minimiser le risque d'attaque par injection SQL lors de la spécification de valeurs de restriction.
Notes
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 un fournisseur managé .NET Framework pour déterminer la liste des restrictions prises en charge en appelant la méthode GetSchema avec le nom de la collection de schémas de restrictions, qui est "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 du fournisseur de données .NET Framework pour la classe SQL Server SqlConnection afin de récupérer les informations de schéma relatives à toutes les tables contenues dans l’exemple de base de données AdventureWorks, et de restreindre les informations retournées aux seules tables du schéma "Sales" :
Imports System.Data.SqlClient
Module Module1
Sub Main()
Dim connectionString As String = "...";
Dim restrictions(3) As String
Using connection As New SqlConnection(connectionString)
connection.Open()
'Specify the restrictions.
restrictions(1) = "Sales"
Dim table As DataTable = connection.GetSchema("Tables", _
restrictions)
' Display the contents of the table.
For Each row As DataRow In table.Rows
For Each col As DataColumn In table.Columns
Console.WriteLine("{0} = {1}", col.ColumnName, row(col))
Next
Console.WriteLine("============================")
Next
Console.WriteLine("Press any key to continue.")
Console.ReadKey()
End Using
End Sub
End Module
using System;
using System.Data;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString ="...";
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.
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("============================");
}
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.
Utilisateurs
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Nom_d'utilisateur |
@Name |
nom |
1 |
Bases de données
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Nom |
@Name |
Nom |
1 |
Tableaux
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 |
Colonnes
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 |
@Table |
TABLE_NAME |
3 |
Colonne |
@Column |
COLUMN_NAME |
4 |
StructuredTypeMembers
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 |
@Table |
TABLE_NAME |
3 |
Colonne |
@Column |
COLUMN_NAME |
4 |
Les vues
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 |
@Table |
TABLE_NAME |
3 |
AfficherColonnes
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Catalogue |
@Catalog |
VOIR_LE_CATALOGUE |
1 |
Propriétaire |
@Owner |
VIEW_SCHEMA |
2 |
Table de charge de travail |
@Table |
VIEW_NAME |
3 |
Colonne |
@Column |
COLUMN_NAME |
4 |
Paramètres de procédure
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Catalogue |
@Catalog |
SPECIFIC_CATALOG |
1 |
Propriétaire |
@Owner |
SPECIFIC_SCHEMA |
2 |
Nom |
@Name |
SPECIFIC_NAME |
3 |
Paramètre |
@Parameter |
PARAMETER_NAME |
4 |
Procédures
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Catalogue |
@Catalog |
SPECIFIC_CATALOG |
1 |
Propriétaire |
@Owner |
SPECIFIC_SCHEMA |
2 |
Nom |
@Name |
SPECIFIC_NAME |
3 |
Catégorie |
@Type |
ROUTINE_TYPE |
4 |
Colonnes d'index
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Catalogue |
@Catalog |
db_name() |
1 |
Propriétaire |
@Owner |
user_name() |
2 |
Table de charge de travail |
@Table |
o.name |
3 |
ConstraintName |
@ConstraintName |
x.name |
4 |
Colonne |
@Column |
c.name |
5 |
Index
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Catalogue |
@Catalog |
db_name() |
1 |
Propriétaire |
@Owner |
user_name() |
2 |
Table de charge de travail |
@Table |
o.name |
3 |
TypesDéfinisParL'utilisateur
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
assembly_name |
@AssemblyName |
assemblies.name |
1 |
udt_name |
@UDTName |
types.assembly_class |
2 |
ForeignKeys
Nom de restriction |
Nom du paramètre |
Valeur par défaut de la restriction |
Numéro de restriction |
Catalogue |
@Catalog |
CONSTRAINT_CATALOG |
1 |
Propriétaire |
@Owner |
CONSTRAINT_SCHEMA |
2 |
Table de charge de travail |
@Table |
TABLE_NAME |
3 |
Nom |
@Name |
CONSTRAINT_NAME |
4 |
Restrictions de schéma SQL Server 2008
Les tableaux suivants répertorient les restrictions pour les collections de schémas SQL Server 2008. Ces restrictions s'appliquent à partir de la version 3.5 SP1 de .NET Framework et SQL Server 2008. Elles ne sont pas prises en charge dans les versions précédentes de .NET Framework et SQL Server.
ColumnSetColumns
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 |
@Table |
TABLE_NAME |
3 |
AllColumns
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 |
@Table |
TABLE_NAME |
3 |
Colonne |
@Column |
COLUMN_NAME |
4 |
Voir aussi