Bagikan melalui


Pembatasan skema

Berlaku untuk: .NET Framework .NET .NET Standard

Mengunduh ADO.NET

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.

Pengguna

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
User_Name @Name nama 1

Database

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Nama @Name Nama 1

Tabel

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

Kolom

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog TABLE_CATALOG 1
Pemilik @Owner TABLE_SCHEMA 2
Tabel @Table TABLE_NAME 3
Kolom @Column COLUMN_NAME 4

StructuredTypeMembers

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog TABLE_CATALOG 1
Pemilik @Owner TABLE_SCHEMA 2
Tabel @Table TABLE_NAME 3
Kolom @Column COLUMN_NAME 4

Tampilan

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog TABLE_CATALOG 1
Pemilik @Owner TABLE_SCHEMA 2
Tabel @Table TABLE_NAME 3

ViewColumns

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog VIEW_CATALOG 1
Pemilik @Owner VIEW_SCHEMA 2
Tabel @Table VIEW_NAME 3
Kolom @Column COLUMN_NAME 4

ProcedureParameters

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog SPECIFIC_CATALOG 1
Pemilik @Owner SPECIFIC_SCHEMA 2
Nama @Name SPECIFIC_NAME 3
Parameter @Parameter PARAMETER_NAME 4

Prosedur

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog SPECIFIC_CATALOG 1
Pemilik @Owner SPECIFIC_SCHEMA 2
Nama @Name SPECIFIC_NAME 3
Jenis @Type ROUTINE_TYPE 4

IndexColumns

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog db_name() 1
Pemilik @Owner user_name() 2
Tabel @Table o.name 3
ConstraintName @ConstraintName x.name 4
Kolom @Column c.name 5

Indeks

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog db_name() 1
Pemilik @Owner user_name() 2
Tabel @Table o.name 3

UserDefinedTypes

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
assembly_name @AssemblyName assemblies.name 1
udt_name @UDTName types.assembly_class 2

ForeignKeys

Nama Pembatasan Nama Parameter Pembatasan Default Jumlah Pembatasan
Katalog @Catalog CONSTRAINT_CATALOG 1
Pemilik @Owner CONSTRAINT_SCHEMA 2
Tabel @Table TABLE_NAME 3
Nama @Name CONSTRAINT_NAME 4

Lihat juga