Şunlar için geçerlidir:
.NET Framework
.NET
.NET Standard
ADO.NET indirin
GetSchema yönteminin ikinci isteğe bağlı parametresi, döndürülen şema bilgisi miktarını sınırlamak için kullanılan kısıtlamalardır ve getSchema yöntemine dize dizisi olarak geçirilir. Dizideki konum geçirebileceğiniz değerleri belirler ve bu, kısıtlama numarasına eşdeğerdir.
Örneğin, aşağıdaki tabloda SQL Server için Microsoft SqlClient Veri Sağlayıcısı kullanılarak "Tablolar" şema koleksiyonu tarafından desteklenen kısıtlamalar açıklanmaktadır. SQL Server şema koleksiyonları için ek kısıtlamalar bu konunun sonunda listelenir.
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
Tablo_Katalog |
1 |
| Sahibi |
@Owner |
Tablo Şeması |
2 |
| Tablo |
@Name |
TABLE_NAME |
3 |
| Tablo Türü |
@TableType |
TABLO_TİPİ |
4 |
Kısıtlama değerlerini belirtme
"Tablolar" şema koleksiyonunun kısıtlamalarından birini kullanmak için, dört öğe içeren bir dize dizisi oluşturun ve ardından öğeye kısıtlama numarasıyla eşleşen bir değer yerleştirin. Örneğin, GetSchema yöntemi tarafından döndürülen tabloları yalnızca "Sales" şemasındaki tablolarla kısıtlamak için, dizinin ikinci öğesini GetSchema yöntemine geçirmeden önce "Sales" olarak ayarlayın.
Uyarı
-
SqlClient için kısıtlama koleksiyonlarının ek bir ParameterName sütunu vardır. Kısıtlama varsayılan sütunu geriye dönük uyumluluk için hala oradadır, ancak şu anda yoksayılır. Kısıtlama değerleri belirtilirken SQL ekleme saldırısı riskini en aza indirmek için dize değiştirme yerine parametreli sorgular kullanılmalıdır.
- Dizideki öğe sayısı, belirtilen şema koleksiyonu için desteklenen kısıtlamaların sayısından küçük veya buna eşit olmalıdır, aksi takdirde bir ArgumentException oluşturulur. Maksimum kısıtlama sayısından daha az olabilir. Eksik kısıtlamaların null (sınırsız) olduğu varsayılır.
Sql Server için Microsoft SqlClient Veri Sağlayıcısı'nı sorgulayarak desteklenen kısıtlamaların listesini belirlemek için GetSchema yöntemini kısıtlamalar şeması koleksiyonunun adıyla (yani "Kısıtlamalar" olarak adlandırarak) belirleyebilirsiniz. Bu, koleksiyon adlarının, kısıtlama adlarının, varsayılan kısıtlama değerlerinin ve kısıtlama numaralarının listesini içeren bir DataTable döndürür.
Example
Aşağıdaki örneklerdeGetSchema örnek veritabanında yer alan tüm tablolarla ilgili şema bilgilerini almak ve döndürülen bilgileri yalnızca "Sales" şemasındaki tablolarla kısıtlamak için SQL Server SqlConnection sınıfı için Microsoft SqlClient Veri Sağlayıcısı yönteminin nasıl kullanılacağı gösterilmektedir:
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("============================");
}
}
}
SQL Server şema kısıtlamaları
Aşağıdaki tablolarda SQL Server şema koleksiyonları için kısıtlamalar listelenmiştir.
Users
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Kullanıcı_Adı |
@Name |
name |
1 |
Databases
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| İsim |
@Name |
İsim |
1 |
Tables
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
Tablo_Katalog |
1 |
| Sahibi |
@Owner |
Tablo Şeması |
2 |
| Tablo |
@Name |
TABLE_NAME |
3 |
| Tablo Türü |
@TableType |
TABLO_TİPİ |
4 |
Kolonlar
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
Tablo_Katalog |
1 |
| Sahibi |
@Owner |
Tablo Şeması |
2 |
| Tablo |
@Table |
TABLE_NAME |
3 |
| Köşe yazısı |
@Column |
COLUMN_NAME |
4 |
YapılandırılmışTürÜyeleri
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
Tablo_Katalog |
1 |
| Sahibi |
@Owner |
Tablo Şeması |
2 |
| Tablo |
@Table |
TABLE_NAME |
3 |
| Köşe yazısı |
@Column |
COLUMN_NAME |
4 |
İzlenimler
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
Tablo_Katalog |
1 |
| Sahibi |
@Owner |
Tablo Şeması |
2 |
| Tablo |
@Table |
TABLE_NAME |
3 |
Sütunları Görüntüle
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
KATALOĞU GÖRÜNTÜLE |
1 |
| Sahibi |
@Owner |
VIEW_SCHEMA |
2 |
| Tablo |
@Table |
GÖRÜNÜM_ADI |
3 |
| Köşe yazısı |
@Column |
COLUMN_NAME |
4 |
Prosedür Parametreleri
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
ÖZEL_KATALOG |
1 |
| Sahibi |
@Owner |
SPESİFİK ŞEMA |
2 |
| İsim |
@Name |
SPECIFIC_NAME |
3 |
| Parametre |
@Parameter |
PARAMETER_NAME |
4 |
Procedures
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
ÖZEL_KATALOG |
1 |
| Sahibi |
@Owner |
SPESİFİK ŞEMA |
2 |
| İsim |
@Name |
SPECIFIC_NAME |
3 |
| Türü |
@Type |
ROUTINE_TYPE |
4 |
Dizin Sütunları
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
db_name() |
1 |
| Sahibi |
@Owner |
user_name() |
2 |
| Tablo |
@Table |
o.name |
3 |
| ConstraintName |
@ConstraintName |
x.name |
4 |
| Köşe yazısı |
@Column |
c.name |
5 |
Indexes
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
db_name() |
1 |
| Sahibi |
@Owner |
user_name() |
2 |
| Tablo |
@Table |
o.name |
3 |
Kullanıcı Tanımlı Türler
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| montaj_adı |
@AssemblyName |
montajlar.adı |
1 |
| udt_name |
@UDTName |
türler.montaj_sınıfı |
2 |
Yabancı Anahtarlar
| Kısıtlama Adı |
Parametre Adı |
Kısıtlama Varsayılanı |
Kısıtlama Numarası |
| Catalog |
@Catalog |
KISIT_KATALOĞU |
1 |
| Sahibi |
@Owner |
KISIT ŞEMASI |
2 |
| Tablo |
@Table |
TABLE_NAME |
3 |
| İsim |
@Name |
CONSTRAINT_NAME |
4 |
Ayrıca bakınız
- SQL Server için Microsoft ADO.NET