Dotyczy:
.NET Framework
.NET
Standard
Pobieranie ADO.NET
Drugi opcjonalny parametr metody GetSchema to ograniczenia, które są używane do ograniczania ilości zwracanych informacji schematu i jest przekazywany do metody GetSchema jako tablicy ciągów. Pozycja w tablicy określa wartości, które można przekazać, i jest to równoważne liczbie ograniczeń.
Na przykład w poniższej tabeli opisano ograniczenia obsługiwane przez kolekcję schematów "Tabele" przy użyciu dostawcy danych Microsoft SqlClient dla programu SQL Server. Dodatkowe ograniczenia dotyczące kolekcji schematów programu SQL Server są wymienione na końcu tego tematu.
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
KATALOG_TABEL |
1 |
| Właściciel |
@Owner |
TABLE_SCHEMA |
2 |
| Tabela |
@Name |
NAZWA_TABELI |
3 |
| RodzajTabeli |
@TableType |
RODZAJ_TABELI |
4 |
Określanie wartości ograniczeń
Aby użyć jednego z ograniczeń kolekcji schematów "Tabele", po prostu utwórz tablicę ciągów z czterema elementami, a następnie umieść wartość w elemecie zgodnym z liczbą ograniczeń. Aby na przykład ograniczyć tabele zwracane przez metodę GetSchema tylko do tych tabel w schemacie "Sales", ustaw drugi element tablicy na "Sales" przed przekazaniem jej do metody GetSchema .
Uwaga / Notatka
- Kolekcje ograniczeń dla
SqlClient mają dodatkową kolumnę ParameterName. Domyślna kolumna ograniczeń jest nadal dostępna dla zgodności z poprzednimi wersjami, ale jest obecnie ignorowana. Zapytania sparametryzowane zamiast zastępowania ciągów powinny być używane w celu zminimalizowania ryzyka ataku iniekcyjnego SQL podczas określania wartości ograniczeń.
- Liczba elementów w tablicy musi być mniejsza lub równa liczbie ograniczeń obsługiwanych dla określonej kolekcji schematów. W przeciwnym razie ArgumentException zostanie zgłoszony element . Może istnieć mniej niż maksymalna liczba ograniczeń. Przyjmuje się, że brakujące ograniczenia mają wartość null (bez ograniczeń).
Aby określić listę obsługiwanych ograniczeń, możesz wysłać zapytanie do dostawcy danych Microsoft SqlClient dla programu SQL Server, wywołując metodę GetSchema o nazwie kolekcji schematów ograniczeń, czyli "Ograniczenia". Spowoduje to zwrócenie DataTable wartości z listą nazw kolekcji, nazw ograniczeń, domyślnych wartości ograniczeń i numerów ograniczeń.
Example
W poniższych przykładach pokazano, jak używać metody GetSchema dostawcy danych Microsoft SqlClient dla SQL Server SqlConnection w celu pobrania informacji o schemacie wszystkich tabel zawartych w przykładowej bazie danych AdventureWorks oraz ograniczenia informacji zwracanych tylko do tych tabel w schemacie "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("============================");
}
}
}
Ograniczenia schematu programu SQL Server
W poniższych tabelach wymieniono ograniczenia dotyczące kolekcji schematów programu SQL Server.
Użytkownicy
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Nazwa_Użytkownika |
@Name |
nazwa |
1 |
Databases
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Name |
@Name |
Name |
1 |
Tables
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
KATALOG_TABEL |
1 |
| Właściciel |
@Owner |
TABLE_SCHEMA |
2 |
| Tabela |
@Name |
NAZWA_TABELI |
3 |
| RodzajTabeli |
@TableType |
RODZAJ_TABELI |
4 |
Kolumny
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
KATALOG_TABEL |
1 |
| Właściciel |
@Owner |
TABLE_SCHEMA |
2 |
| Tabela |
@Table |
NAZWA_TABELI |
3 |
| Kolumna |
@Column |
NAZWA_KOLUMNY |
4 |
ElementyTypuStrukturalnego
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
KATALOG_TABEL |
1 |
| Właściciel |
@Owner |
TABLE_SCHEMA |
2 |
| Tabela |
@Table |
NAZWA_TABELI |
3 |
| Kolumna |
@Column |
NAZWA_KOLUMNY |
4 |
Views
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
KATALOG_TABEL |
1 |
| Właściciel |
@Owner |
TABLE_SCHEMA |
2 |
| Tabela |
@Table |
NAZWA_TABELI |
3 |
Kolumny widoku
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
ZOBACZ KATALOG |
1 |
| Właściciel |
@Owner |
VIEW_SCHEMA |
2 |
| Tabela |
@Table |
VIEW_NAME |
3 |
| Kolumna |
@Column |
NAZWA_KOLUMNY |
4 |
Parametry procedury
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
SPECYFICZNY_KATALOG |
1 |
| Właściciel |
@Owner |
SPECIFIC_SCHEMA |
2 |
| Name |
@Name |
SPECIFIC_NAME |
3 |
| Parameter |
@Parameter |
PARAMETER_NAME |
4 |
Procedures
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
SPECYFICZNY_KATALOG |
1 |
| Właściciel |
@Owner |
SPECIFIC_SCHEMA |
2 |
| Name |
@Name |
SPECIFIC_NAME |
3 |
| Typ |
@Type |
ROUTINE_TYPE |
4 |
Kolumny indeksu
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
db_name() |
1 |
| Właściciel |
@Owner |
user_name() |
2 |
| Tabela |
@Table |
o.name |
3 |
| ConstraintName |
@ConstraintName |
x.nazwa |
4 |
| Kolumna |
@Column |
c.name |
5 |
Indexes
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
db_name() |
1 |
| Właściciel |
@Owner |
user_name() |
2 |
| Tabela |
@Table |
o.name |
3 |
TypyZdefiniowanePrzezUżytkownika
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| nazwa_kompilacji |
@AssemblyName |
zespoły.nazwa |
1 |
| udt_nazwa |
@UDTName |
types.assembly_class |
2 |
Obceklucze
| Nazwa ograniczenia |
Nazwa parametru |
Domyślne ograniczenie |
Liczba ograniczeń |
| Catalog |
@Catalog |
KATALOG_OGRANICZEŃ |
1 |
| Właściciel |
@Owner |
Schemat ograniczeń |
2 |
| Tabela |
@Table |
NAZWA_TABELI |
3 |
| Name |
@Name |
NAZWA OGRANICZENIA |
4 |
Zobacz także