O segundo parâmetro opcional do método GetSchema são as restrições usadas para limitar a quantidade de informações de esquema retornadas, e é transmitido para o método GetSchema como uma matriz de cadeias de caracteres. A posição na matriz determina os valores que podem se transmitidos, e isso é equivalente ao número da restrição.
Por exemplo, a tabela a seguir descreve as restrições compatíveis com a coleção de esquemas "Tables" usando o Provedor de Dados Microsoft SqlClient para SQL Server. As restrições adicionais para as coleções de esquemas do SQL Server são listadas ao final deste tópico.
Nome da restrição
Nome do Parâmetro
Padrão da restrição
Número da restrição
Catálogo
@Catalog
TABLE_CATALOG
1
Proprietário
@Owner
TABLE_SCHEMA
2
Tabela
@Name
TABLE_NAME
3
TableType
@TableType
TABLE_TYPE
4
Como especificar valores de restrição
Para usar uma das restrições da coleção de esquemas "Tables", basta criar uma matriz de cadeias de caracteres com quatro elementos e inserir um valor no elemento que corresponde ao número da restrição. Por exemplo, para restringir as tabelas retornadas pelo método GetSchema apenas às tabelas no esquema "Sales", defina o segundo elemento da matriz como "Sales" antes de transmiti-lo para o método GetSchema.
Observação
As coleções de restrições para SqlClient têm uma coluna ParameterName adicional. A coluna padrão de restrição ainda está disponível para compatibilidade com versões anteriores, mas é ignorada no momento. Consultas parametrizadas em vez de substituição de cadeia de caracteres devem ser usadas para minimizar o risco de um ataque de injeção de SQL ao especificar valores de restrição.
O número de elementos na matriz precisa ser inferior ou igual ao número de restrições compatíveis com a coleção de esquemas especificada. Caso contrário, uma ArgumentException será gerada. Pode haver menos do que o número máximo de restrições. As restrições ausentes são consideradas nulas (irrestrito).
Você pode consultar o Provedor de Dados Microsoft SqlClient para SQL Server para determinar a lista de restrições compatíveis chamando o método GetSchema com o nome da coleção de esquemas de restrições, que é "Restrictions". Isso retornará uma DataTable com uma lista de nomes de coleção, os nomes de restrição, os valores de restrição padrão e os números de restrição.
Exemplo
Os seguintes exemplos demonstram como usar o método GetSchema da classe SqlConnection do Provedor de Dados Microsoft SqlClient para SQL Server para recuperar informações de esquema sobre todas as tabelas contidas no banco de dados de exemplo AdventureWorks e para restringir as informações retornadas apenas às tabelas no esquema "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("============================");
}
}
}
Restrições de esquema do SQL Server
As tabelas a seguir listam as restrições para coleções de esquemas do SQL Server.