Parameter opsional kedua dari metode GetSchema adalah pembatasan yang digunakan untuk membatasi jumlah informasi skema yang dikembalikan, dan parameter tersebut diteruskan ke metode GetSchema sebagai array string. Posisi dalam array menentukan nilai yang dapat Anda teruskan, dan nilai ini setara dengan jumlah batasan.
Misalnya, tabel berikut menjelaskan batasan yang didukung oleh kumpulan skema "Tabel" menggunakan Penyedia Data Microsoft SqlClient untuk SQL Server. Pembatasan tambahan untuk kumpulan skema SQL Server tercantum di akhir topik ini.
Nama Pembatasan
Nama Parameter
Pembatasan Default
Jumlah Pembatasan
Katalog
@Catalog
TABLE_CATALOG
1
Pemilik
@Owner
TABLE_SCHEMA
2
Tabel
@Name
TABLE_NAME
3
TableType
@TableType
TABLE_TYPE
4
Menentukan nilai pembatasan
Untuk menggunakan salah satu pembatasan dari kumpulan skema "Tabel", cukup buat array string dengan empat elemen, lalu tempatkan nilai di elemen yang cocok dengan jumlah pembatasan. Misalnya, untuk membatasi tabel yang dikembalikan oleh metode GetSchema hanya untuk tabel tersebut dalam skema "Penjualan", atur elemen kedua array ke "Penjualan" sebelum meneruskannya ke metode GetSchema.
Catatan
Koleksi pembatasan untuk SqlClient memiliki kolom tambahan ParameterName . Kolom default pembatasan masih ada untuk kompatibilitas mundur, tetapi saat ini diabaikan. Kueri berparameter daripada penggantian string harus digunakan untuk meminimalkan risiko serangan injeksi SQL saat menentukan nilai pembatasan.
Jumlah elemen dalam array harus kurang dari atau sama dengan jumlah pembatasan yang didukung untuk kumpulan skema yang ditentukan, jika tidak, ArgumentException akan ditampilkan. Jumlah pembatasan bisa kurang dari maksimum. Batasan yang hilang dianggap null (tidak dibatasi).
Anda dapat mengkueri Penyedia Data Microsoft SqlClient untuk SQL Server untuk menentukan daftar pembatasan yang didukung dengan memanggil metode GetSchema dengan nama pengumpulan skema pembatasan, yaitu "Pembatasan". GetSchema ini akan mengembalikan DataTable dengan daftar nama kumpulan, nama pembatasan, nilai pembatasan default, dan jumlah pembatasan.
Contoh
Contoh berikut menunjukkan cara menggunakan GetSchema metode Penyedia Data Microsoft SqlClient untuk kelas SQL Server SqlConnection untuk mengambil informasi skema tentang semua tabel yang terkandung dalam database sampel AdventureWorks , dan untuk membatasi informasi yang dikembalikan hanya ke tabel tersebut dalam skema "Penjualan":
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("============================");
}
}
}
Pembatasan skema SQL Server
Tabel berikut mencantumkan batasan untuk kumpulan skema SQL Server.