Share via


DbDataAdapter.FillSchema Metode

Definisi

DataTable Menambahkan ke DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data.

Overload

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

DataTable Menambahkan ke yang ditentukan DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data berdasarkan yang ditentukanSchemaType.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Mengonfigurasi skema yang ditentukan DataTable berdasarkan , string perintah, dan CommandBehavior nilai yang ditentukanSchemaType.

FillSchema(DataSet, SchemaType, String)

DataTable Menambahkan ke yang ditentukan DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data berdasarkan dan DataTableyang ditentukanSchemaType.

FillSchema(DataTable, SchemaType)

Mengonfigurasi skema yang ditentukan DataTable berdasarkan yang ditentukan SchemaType.

FillSchema(DataSet, SchemaType)

DataTable Menambahkan "Tabel" bernama ke yang ditentukan DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data berdasarkan yang ditentukanSchemaType.

FillSchema(DataSet, SchemaType, IDbCommand, String, CommandBehavior)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

DataTable Menambahkan ke yang ditentukan DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data berdasarkan yang ditentukanSchemaType.

protected:
 virtual cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::String ^ srcTable, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, string srcTable, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
Protected Overridable Function FillSchema (dataSet As DataSet, schemaType As SchemaType, command As IDbCommand, srcTable As String, behavior As CommandBehavior) As DataTable()

Parameter

dataSet
DataSet

yang DataSet akan diisi dengan skema dari sumber data.

schemaType
SchemaType

Salah SchemaType satu nilai.

command
IDbCommand

Pernyataan SQL SELECT yang digunakan untuk mengambil baris dari sumber data.

srcTable
String

Nama tabel sumber yang digunakan untuk pemetaan tabel.

behavior
CommandBehavior

Salah CommandBehavior satu nilai.

Mengembalikan

Array DataTable objek yang berisi informasi skema yang dikembalikan dari sumber data.

Keterangan

Metode mengambil FillSchema skema dari sumber data menggunakan SelectCommand. Objek koneksi yang SelectCommand terkait dengan harus valid, tetapi tidak perlu dibuka. Jika koneksi ditutup sebelum FillSchema dipanggil, koneksi dibuka untuk mengambil data, lalu ditutup. Jika koneksi terbuka sebelum FillSchema dipanggil, koneksi tetap terbuka.

FillSchema Operasi menambahkan DataTable ke tujuan DataSet. Kemudian menambahkan kolom ke DataColumnCollection dari DataTable, dan mengonfigurasi properti berikut DataColumn jika ada di sumber data:

FillSchema juga mengonfigurasi PrimaryKey properti dan Constraints sesuai dengan aturan berikut:

  • Jika satu atau beberapa kolom kunci primer dikembalikan oleh SelectCommand, kolom tersebut digunakan sebagai kolom kunci utama untuk DataTable.

  • Jika tidak ada kolom kunci primer yang dikembalikan tetapi kolom unik adalah, kolom unik digunakan sebagai kunci utama jika, dan hanya jika, semua kolom unik tidak dapat dipulihkan. Jika salah satu kolom dapat diubah ke null, UniqueConstraint ditambahkan ke ConstraintCollection, tetapi PrimaryKey properti tidak diatur.

  • Jika kolom kunci primer dan kolom unik dikembalikan, kolom kunci primer digunakan sebagai kolom kunci primer untuk DataTable.

Perhatikan bahwa kunci primer dan batasan unik ditambahkan ke ConstraintCollection sesuai dengan aturan sebelumnya, tetapi jenis batasan lainnya tidak ditambahkan.

Jika indeks berkluster unik ditentukan pada kolom atau kolom dalam tabel SQL Server dan batasan kunci primer ditentukan pada sekumpulan kolom terpisah, maka nama kolom dalam indeks berkluster akan dikembalikan. Untuk mengembalikan nama atau nama kolom kunci primer, gunakan petunjuk kueri dengan pernyataan SELECT yang menentukan nama indeks kunci utama. Untuk informasi selengkapnya tentang menentukan petunjuk kueri, lihat Petunjuk (Transact-SQL) - Kueri.

IDataAdapter Jika menemukan kolom duplikat saat mengisi DataTable, kolom akan menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Jika data masuk berisi kolom yang tidak disebutkan namanya, data tersebut ditempatkan sesuai DataSet dengan pola "Column1", "Column2", dan sebagainya. Saat beberapa tataan hasil ditambahkan ke setiap tataan DataSet hasil ditempatkan dalam tabel terpisah. Kumpulan hasil tambahan dinamai dengan menambahkan nilai integral ke nama tabel yang ditentukan (misalnya, "Table", "Table1", "Table2", dan sebagainya.). Jika aplikasi Anda menggunakan nama kolom dan tabel, pastikan tidak ada konflik dengan pola penamaan ini.

Metode ini FillSchema mendukung skenario di mana DataSet berisi beberapa DataTable objek yang namanya hanya berbeda menurut kasus. Dalam situasi seperti itu, FillSchema lakukan perbandingan peka huruf besar/kecil untuk menemukan tabel yang sesuai, dan membuat tabel baru jika tidak ada kecocokan yang tepat. Kode C# berikut mengilustrasikan perilaku ini.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Jika FillSchema dipanggil dan DataSet hanya berisi satu DataTable yang namanya hanya berbeda menurut kasus, yang DataTable diperbarui. Dalam skenario ini, perbandingannya tidak peka huruf besar/kecil. Kode C# berikut mengilustrasikan perilaku ini.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

FillSchema tidak mengembalikan baris apa pun. Fill Gunakan metode untuk menambahkan baris ke DataTable.

Catatan

Saat menangani pernyataan SQL batch yang mengembalikan beberapa hasil, implementasi FillSchema untuk Penyedia Data .NET Framework untuk OLE DB mengambil informasi skema hanya untuk hasil pertama. Untuk mengambil informasi skema untuk beberapa hasil, gunakan Fill dengan diatur MissingSchemaAction ke AddWithKey.

Saat menggunakan FillSchema, Penyedia Data .NET Framework untuk SQL Server menambahkan klausa FOR BROWSE ke pernyataan yang dijalankan. Pengguna harus menyadari potensi efek samping, seperti gangguan dengan penggunaan pernyataan SET FMTONLY ON. Untuk informasi selengkapnya, lihat SET FMTONLY (Transact-SQL).

Catatan Bagi Inheritor

Implementasi FillSchema(DataSet, SchemaType) metode ini dilindungi dan dirancang untuk digunakan oleh penyedia data .NET Framework.

Lihat juga

Berlaku untuk

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Mengonfigurasi skema yang ditentukan DataTable berdasarkan , string perintah, dan CommandBehavior nilai yang ditentukanSchemaType.

protected:
 virtual System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType, System::Data::IDbCommand ^ command, System::Data::CommandBehavior behavior);
protected virtual System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
protected virtual System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType, System.Data.IDbCommand command, System.Data.CommandBehavior behavior);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
Protected Overridable Function FillSchema (dataTable As DataTable, schemaType As SchemaType, command As IDbCommand, behavior As CommandBehavior) As DataTable

Parameter

dataTable
DataTable

yang DataTable akan diisi dengan skema dari sumber data.

schemaType
SchemaType

Salah SchemaType satu nilai.

command
IDbCommand

Pernyataan SQL SELECT yang digunakan untuk mengambil baris dari sumber data.

behavior
CommandBehavior

Salah CommandBehavior satu nilai.

Mengembalikan

DataTable Objek yang berisi informasi skema yang dikembalikan dari sumber data.

Keterangan

Metode mengambil FillSchema skema dari sumber data menggunakan SelectCommand. Objek koneksi yang SelectCommand terkait dengan harus valid, tetapi tidak perlu dibuka. Jika koneksi ditutup sebelum FillSchema dipanggil, koneksi dibuka untuk mengambil data, lalu ditutup. Jika koneksi terbuka sebelum FillSchema dipanggil, koneksi tetap terbuka.

FillSchema Operasi menambahkan DataTable ke tujuan DataSet. Kemudian menambahkan kolom ke DataColumnCollection dari DataTable, dan mengonfigurasi properti berikut DataColumn jika ada di sumber data:

FillSchema juga mengonfigurasi PrimaryKey properti dan Constraints sesuai dengan aturan berikut:

  • Jika satu atau beberapa kolom kunci primer dikembalikan oleh SelectCommand, kolom tersebut digunakan sebagai kolom kunci utama untuk DataTable.

  • Jika tidak ada kolom kunci primer yang dikembalikan tetapi kolom unik adalah, kolom unik digunakan sebagai kunci utama jika, dan hanya jika, semua kolom unik tidak dapat dipulihkan. Jika salah satu kolom dapat diubah ke null, UniqueConstraint ditambahkan ke ConstraintCollection, tetapi PrimaryKey properti tidak diatur.

  • Jika kolom kunci primer dan kolom unik dikembalikan, kolom kunci primer digunakan sebagai kolom kunci primer untuk DataTable.

Perhatikan bahwa kunci primer dan batasan unik ditambahkan ke ConstraintCollection sesuai dengan aturan sebelumnya, tetapi jenis batasan lainnya tidak ditambahkan.

Jika indeks berkluster unik ditentukan pada kolom atau kolom dalam tabel SQL Server dan batasan kunci primer ditentukan pada sekumpulan kolom terpisah, maka nama kolom dalam indeks berkluster akan dikembalikan. Untuk mengembalikan nama atau nama kolom kunci primer, gunakan petunjuk kueri dengan pernyataan SELECT yang menentukan nama indeks kunci utama. Untuk informasi selengkapnya tentang menentukan petunjuk kueri, lihat Petunjuk (Transact-SQL) - Kueri.

IDataAdapter Jika menemukan kolom duplikat saat mengisi DataTable, kolom akan menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Jika data masuk berisi kolom yang tidak disebutkan namanya, data tersebut ditempatkan sesuai DataSet dengan pola "Column1", "Column2", dan sebagainya. Saat beberapa tataan hasil ditambahkan ke setiap tataan DataSet hasil ditempatkan dalam tabel terpisah. Kumpulan hasil tambahan dinamai dengan menambahkan nilai integral ke nama tabel yang ditentukan (misalnya, "Table", "Table1", "Table2", dan sebagainya.). Jika aplikasi Anda menggunakan nama kolom dan tabel, pastikan tidak ada konflik dengan pola penamaan ini.

FillSchema tidak mengembalikan baris apa pun. Fill Gunakan metode untuk menambahkan baris ke DataTable.

Catatan

Saat menangani pernyataan SQL batch yang mengembalikan beberapa hasil, implementasi FillSchema untuk Penyedia Data .NET Framework untuk OLE DB mengambil informasi skema hanya untuk hasil pertama. Untuk mengambil informasi skema untuk beberapa hasil, gunakan Fill dengan diatur MissingSchemaAction ke AddWithKey.

Saat menggunakan FillSchema, Penyedia Data .NET Framework untuk SQL Server menambahkan klausa FOR BROWSE ke pernyataan yang dijalankan. Pengguna harus menyadari potensi efek samping, seperti gangguan dengan penggunaan pernyataan SET FMTONLY ON. Untuk informasi selengkapnya, lihat SET FMTONLY (Transact-SQL).

Catatan Bagi Inheritor

Implementasi FillSchema(DataSet, SchemaType) metode ini dilindungi dan dirancang untuk digunakan oleh penyedia data .NET Framework.

Lihat juga

Berlaku untuk

FillSchema(DataSet, SchemaType, String)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

DataTable Menambahkan ke yang ditentukan DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data berdasarkan yang ditentukan SchemaType dan DataTable.

public:
 cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType, System::String ^ srcTable);
public System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
Public Function FillSchema (dataSet As DataSet, schemaType As SchemaType, srcTable As String) As DataTable()

Parameter

dataSet
DataSet

A DataSet untuk menyisipkan skema.

schemaType
SchemaType

Salah SchemaType satu nilai yang menentukan cara menyisipkan skema.

srcTable
String

Nama tabel sumber yang akan digunakan untuk pemetaan tabel.

Mengembalikan

Referensi ke kumpulan DataTable objek yang ditambahkan ke DataSet.

Pengecualian

Tabel sumber untuk mendapatkan skema tidak dapat ditemukan.

Contoh

Contoh berikut menggunakan kelas turunan, SqlDataAdapter, untuk mengisi DataSet dengan skema, dan mengembalikan DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers");
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Source, "Customers")
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Keterangan

Metode ini mengambil informasi skema dari sumber data menggunakan SelectCommand.

FillSchema Operasi menambahkan DataTable ke tujuan DataSet. Kemudian menambahkan kolom ke DataColumnCollection dari DataTable, dan mengonfigurasi properti berikut DataColumn jika ada di sumber data:

FillSchema juga mengonfigurasi PrimaryKey properti dan Constraints sesuai dengan aturan berikut:

  • Jika satu atau beberapa kolom kunci primer dikembalikan oleh SelectCommand, kolom tersebut digunakan sebagai kolom kunci utama untuk DataTable.

  • Jika tidak ada kolom kunci utama yang dikembalikan tetapi kolom unik, kolom unik digunakan sebagai kunci utama jika, dan hanya jika, semua kolom unik tidak dapat diulang. Jika salah satu kolom dapat diubah ke null, UniqueConstraint ditambahkan ke ConstraintCollection, tetapi PrimaryKey properti tidak diatur.

  • Jika kolom kunci primer dan kolom unik dikembalikan, kolom kunci primer digunakan sebagai kolom kunci primer untuk DataTable.

Perhatikan bahwa kunci primer dan batasan unik ditambahkan ke ConstraintCollection sesuai dengan aturan sebelumnya, tetapi jenis batasan lainnya tidak ditambahkan.

Jika indeks berkluster unik ditentukan pada kolom atau kolom dalam tabel SQL Server dan batasan kunci utama ditentukan pada sekumpulan kolom terpisah, maka nama kolom dalam indeks berkluster akan dikembalikan. Untuk mengembalikan nama atau nama kolom kunci utama, gunakan petunjuk kueri dengan pernyataan SELECT yang menentukan nama indeks kunci utama. Untuk informasi selengkapnya tentang menentukan petunjuk kueri, lihat Petunjuk (Transact-SQL) - Kueri.

Informasi kunci primer digunakan selama Fill untuk menemukan dan mengganti baris apa pun yang kolom kuncinya cocok. Jika ini bukan perilaku yang diinginkan, gunakan Fill tanpa meminta informasi skema.

DbDataAdapter Jika menemukan kolom duplikat saat mengisi DataTable, kolom menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Jika data masuk berisi kolom yang tidak disebutkan namanya, data tersebut ditempatkan sesuai DataSet dengan pola "Column1", "Column2", dan sebagainya. Ketika beberapa tataan hasil ditambahkan ke setiap tataan DataSet hasil ditempatkan dalam tabel terpisah. Kumpulan hasil tambahan dinamai dengan menambahkan nilai integral ke nama tabel yang ditentukan (misalnya, "Tabel", "Table1", "Table2", dan sebagainya.). Jika aplikasi Anda menggunakan nama kolom dan tabel, pastikan tidak ada konflik dengan pola penamaan ini.

Metode ini FillSchema mendukung skenario di mana DataSet berisi beberapa DataTable objek yang namanya hanya berbeda menurut kasus. Dalam situasi seperti itu, FillSchema lakukan perbandingan peka huruf besar/kecil untuk menemukan tabel yang sesuai, dan membuat tabel baru jika tidak ada kecocokan yang tepat. Kode C# berikut mengilustrasikan perilaku ini.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
dataset.Tables.Add("AAA");  
adapter.FillSchema(dataset, "aaa"); // Fills the schema of "aaa", which already exists in the DataSet.  
adapter.FillSchema(dataset, "Aaa"); // Adds a new table called "Aaa".  

Jika FillSchema dipanggil dan DataSet hanya berisi satu DataTable yang namanya hanya berbeda menurut kasus, yang DataTable diperbarui. Dalam skenario ini, perbandingannya tidak peka huruf besar/kecil. Kode C# berikut mengilustrasikan perilaku ini.

DataSet dataset = new DataSet();  
dataset.Tables.Add("aaa");  
adapter.FillSchema(dataset, "AAA"); // Fills the schema of table "aaa" because only one similarly named table is in the DataSet.  

Objek IDbConnection yang terkait dengan perintah pilih harus valid, tetapi tidak perlu dibuka. IDbConnection Jika ditutup sebelum FillSchema dipanggil, data akan dibuka untuk mengambil data, lalu ditutup. Jika koneksi terbuka sebelum FillSchema dipanggil, koneksi dibiarkan terbuka.

Catatan

Saat menangani pernyataan SQL batch yang mengembalikan beberapa hasil, implementasi FillSchema untuk Penyedia Data .NET Framework untuk OLE DB mengambil informasi skema hanya untuk hasil pertama. Untuk mengambil informasi skema untuk beberapa hasil, gunakan Fill dengan diatur MissingSchemaAction ke AddWithKey.

Saat menggunakan FillSchema, Penyedia Data .NET Framework untuk SQL Server menambahkan klausa FOR BROWSE ke pernyataan yang dijalankan. Pengguna harus menyadari potensi efek samping, seperti gangguan dengan penggunaan pernyataan SET FMTONLY ON. Untuk informasi selengkapnya, lihat SET FMTONLY (Transact-SQL).

Lihat juga

Berlaku untuk

FillSchema(DataTable, SchemaType)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

Mengonfigurasi skema yang ditentukan DataTable berdasarkan yang ditentukan SchemaType.

public:
 System::Data::DataTable ^ FillSchema(System::Data::DataTable ^ dataTable, System::Data::SchemaType schemaType);
public System.Data.DataTable? FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
public System.Data.DataTable FillSchema (System.Data.DataTable dataTable, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
Public Function FillSchema (dataTable As DataTable, schemaType As SchemaType) As DataTable

Parameter

dataTable
DataTable

yang DataTable akan diisi dengan skema dari sumber data.

schemaType
SchemaType

Salah SchemaType satu nilai.

Mengembalikan

DataTable yang berisi informasi skema yang dikembalikan dari sumber data.

Contoh

Contoh berikut menggunakan kelas turunan, SqlDataAdapter, untuk mengisi DataSet dengan skema, dan mengembalikan DataTable.

public static DataTable GetCustomerData(string dataSetName,
    string connectionString)
{
    DataTable table = new DataTable(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(table, SchemaType.Mapped);
        adapter.Fill(table);
        return table;
    }
}
Private Function GetCustomerData(ByVal dataTableName As String, _
    ByVal connectionString As String) As DataTable

    Dim table As New DataTable(dataTableName)

    Using connection As SqlConnection = New SqlConnection(connectionString)

        Dim adapter New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(table, SchemaType.Mapped)
        adapter.Fill(table)
        Return table
    End Using
End Function

Keterangan

Metode mengambil FillSchema skema dari sumber data menggunakan SelectCommand. Objek koneksi yang SelectCommand terkait dengan harus valid, tetapi tidak perlu dibuka. Jika koneksi ditutup sebelum FillSchema dipanggil, koneksi dibuka untuk mengambil data, lalu ditutup. Jika koneksi terbuka sebelum FillSchema dipanggil, koneksi tetap terbuka.

FillSchema Operasi mengembalikan DataTable. Kemudian menambahkan kolom ke DataColumnCollection dari DataTable, dan mengonfigurasi properti berikut DataColumn jika ada di sumber data:

FillSchema juga mengonfigurasi PrimaryKey properti dan Constraints sesuai dengan aturan berikut:

  • PrimaryKey Jika telah ditentukan untuk DataTable, atau DataTable berisi data, PrimaryKey properti tidak akan diatur.

  • Jika satu atau beberapa kolom kunci primer dikembalikan oleh SelectCommand, kolom tersebut digunakan sebagai kolom kunci utama untuk DataTable.

  • Jika tidak ada kolom kunci utama yang dikembalikan tetapi kolom unik, kolom unik digunakan sebagai kunci utama jika, dan hanya jika, semua kolom unik tidak dapat diulang. Jika salah satu kolom dapat diubah ke null, UniqueConstraint ditambahkan ke ConstraintCollection, tetapi PrimaryKey properti tidak diatur.

  • Jika kolom kunci primer dan kolom unik dikembalikan, kolom kunci primer digunakan sebagai kolom kunci primer untuk DataTable.

Perhatikan bahwa kunci primer dan batasan unik ditambahkan ke ConstraintCollection sesuai dengan aturan sebelumnya, tetapi jenis batasan lainnya tidak ditambahkan. Proses ini mungkin memerlukan beberapa perjalanan pulang-pergi ke server.

Jika indeks berkluster unik ditentukan pada kolom atau kolom dalam tabel SQL Server dan batasan kunci utama ditentukan pada sekumpulan kolom terpisah, maka nama kolom dalam indeks berkluster akan dikembalikan. Untuk mengembalikan nama atau nama kolom kunci utama, gunakan petunjuk kueri dengan pernyataan SELECT yang menentukan nama indeks kunci utama. Untuk informasi selengkapnya tentang menentukan petunjuk kueri, lihat Petunjuk (Transact-SQL) - Kueri.

DbDataAdapter Jika menemukan kolom duplikat saat mengisi DataTable, kolom menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Jika data masuk berisi kolom yang tidak disebutkan namanya, data tersebut ditempatkan sesuai DataSet dengan pola "Column1", "Column2", dan sebagainya. Ketika beberapa tataan hasil ditambahkan ke setiap tataan DataSet hasil ditempatkan dalam tabel terpisah. Kumpulan hasil tambahan dinamai dengan menambahkan nilai integral ke nama tabel yang ditentukan (misalnya, "Tabel", "Table1", "Table2", dan sebagainya.). Jika aplikasi Anda menggunakan nama kolom dan tabel, pastikan tidak ada konflik dengan pola penamaan ini.

FillSchema tidak mengembalikan baris apa pun. Fill Gunakan metode untuk menambahkan baris ke DataTable.

Catatan

Saat menangani pernyataan SQL batch yang mengembalikan beberapa hasil, implementasi FillSchema untuk Penyedia Data .NET Framework untuk OLE DB mengambil informasi skema hanya untuk hasil pertama. Untuk mengambil informasi skema untuk beberapa hasil, gunakan Fill dengan diatur MissingSchemaAction ke AddWithKey.

Saat menggunakan FillSchema, Penyedia Data .NET Framework untuk SQL Server menambahkan klausa FOR BROWSE ke pernyataan yang dijalankan. Pengguna harus menyadari potensi efek samping, seperti gangguan dengan penggunaan pernyataan SET FMTONLY ON. Untuk informasi selengkapnya, lihat SET FMTONLY (Transact-SQL).

Lihat juga

Berlaku untuk

FillSchema(DataSet, SchemaType)

Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs
Sumber:
DbDataAdapter.cs

DataTable Menambahkan "Tabel" bernama ke yang ditentukan DataSet dan mengonfigurasi skema agar sesuai dengan yang ada di sumber data berdasarkan yang ditentukanSchemaType.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
public override System.Data.DataTable[] FillSchema (System.Data.DataSet dataSet, System.Data.SchemaType schemaType);
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
Public Overrides Function FillSchema (dataSet As DataSet, schemaType As SchemaType) As DataTable()

Parameter

dataSet
DataSet

DataSet untuk menyisipkan skema.

schemaType
SchemaType

Salah SchemaType satu nilai yang menentukan cara menyisipkan skema.

Mengembalikan

Referensi ke kumpulan DataTable objek yang ditambahkan ke DataSet.

Penerapan

Contoh

Contoh berikut menggunakan kelas turunan, SqlDataAdapter, untuk mengisi DataSet dengan skema, dan mengembalikan DataSet.

public static DataSet GetCustomerData(string dataSetName,
    string connectionString)
{
    DataSet dataSet = new DataSet(dataSetName);

    using (SqlConnection connection = new SqlConnection(connectionString))
    {
        SqlDataAdapter adapter = new SqlDataAdapter(
            "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", connection);

        DataTableMapping mapping = adapter.TableMappings.Add("Table", "Customers");
        mapping.ColumnMappings.Add("CompanyName", "Name");
        mapping.ColumnMappings.Add("ContactName", "Contact");

        connection.Open();

        adapter.FillSchema(dataSet, SchemaType.Mapped);
        adapter.Fill(dataSet);

        return dataSet;
    }
}
Private Function GetCustomerData(ByVal dataSetName As String, _
    ByVal connectionString As String) As DataSet

    Dim dataSet As New DataSet(dataSetName)

    Using connection As SqlConnection = New SqlConnection(connectionString)
        Dim adapter As New SqlDataAdapter( _
           "SELECT CustomerID, CompanyName, ContactName FROM dbo.Customers", _
           connection)

        Dim mapping As DataTableMapping = adapter.TableMappings.Add( _
           "Table", "Customers")
        mapping.ColumnMappings.Add("CompanyName", "Name")
        mapping.ColumnMappings.Add("ContactName", "Contact")

        connection.Open()

        adapter.FillSchema(dataSet, SchemaType.Mapped)
        adapter.Fill(dataSet)
        Return dataSet
    End Using
End Function

Keterangan

Metode ini mengambil informasi skema dari sumber data menggunakan SelectCommand.

FillSchema Operasi menambahkan DataTable ke tujuan DataSet. Kemudian menambahkan kolom ke DataColumnCollection dari DataTable, dan mengonfigurasi properti berikut DataColumn jika ada di sumber data:

FillSchema juga mengonfigurasi PrimaryKey properti dan Constraints sesuai dengan aturan berikut:

  • Jika satu atau beberapa kolom kunci primer dikembalikan oleh SelectCommand, kolom tersebut digunakan sebagai kolom kunci utama untuk DataTable.

  • Jika tidak ada kolom kunci utama yang dikembalikan tetapi kolom unik, kolom unik digunakan sebagai kunci utama jika, dan hanya jika, semua kolom unik tidak dapat diulang. Jika salah satu kolom dapat diubah ke null, UniqueConstraint ditambahkan ke ConstraintCollection, tetapi PrimaryKey properti tidak diatur.

  • Jika kolom kunci primer dan kolom unik dikembalikan, kolom kunci primer digunakan sebagai kolom kunci primer untuk DataTable.

Perhatikan bahwa kunci primer dan batasan unik ditambahkan ke ConstraintCollection sesuai dengan aturan sebelumnya, tetapi jenis batasan lainnya tidak ditambahkan.

Jika indeks berkluster unik ditentukan pada kolom atau kolom dalam tabel SQL Server dan batasan kunci utama ditentukan pada sekumpulan kolom terpisah, maka nama kolom dalam indeks berkluster akan dikembalikan. Untuk mengembalikan nama atau nama kolom kunci utama, gunakan petunjuk kueri dengan pernyataan SELECT yang menentukan nama indeks kunci utama. Untuk informasi selengkapnya tentang menentukan petunjuk kueri, lihat Petunjuk (Transact-SQL) - Kueri.

Informasi kunci primer digunakan selama Fill untuk menemukan dan mengganti baris apa pun yang kolom kuncinya cocok. Jika ini bukan perilaku yang diinginkan, gunakan Fill tanpa meminta informasi skema.

IDataAdapter Jika menemukan kolom duplikat saat mengisi DataTable, kolom menghasilkan nama untuk kolom berikutnya, menggunakan pola "columnname1", "columnname2", "columnname3", dan sebagainya. Jika data masuk berisi kolom yang tidak disebutkan namanya, data tersebut ditempatkan sesuai DataSet dengan pola "Column1", "Column2", dan sebagainya. Ketika beberapa tataan hasil ditambahkan ke setiap tataan DataSet hasil ditempatkan dalam tabel terpisah. Kumpulan hasil tambahan dinamai dengan menambahkan nilai integral ke nama tabel yang ditentukan (misalnya, "Tabel", "Table1", "Table2", dan sebagainya.). Jika aplikasi Anda menggunakan nama kolom dan tabel, pastikan tidak ada konflik dengan pola penamaan ini.

Objek IDbConnection yang terkait dengan perintah pilih harus valid, tetapi tidak perlu dibuka. IDbConnection Jika ditutup sebelum FillSchema dipanggil, data dibuka untuk mengambil data, lalu ditutup. Jika koneksi terbuka sebelum FillSchema dipanggil, koneksi dibiarkan terbuka.

Catatan

Saat menangani pernyataan SQL batch yang mengembalikan beberapa hasil, implementasi FillSchema untuk Penyedia Data .NET Framework untuk OLE DB mengambil informasi skema hanya untuk hasil pertama. Untuk mengambil informasi skema untuk beberapa hasil, gunakan Fill dengan diatur MissingSchemaAction ke AddWithKey.

Saat menggunakan FillSchema, Penyedia Data .NET Framework untuk SQL Server menambahkan klausa FOR BROWSE ke pernyataan yang dijalankan. Pengguna harus menyadari potensi efek samping, seperti gangguan dengan penggunaan pernyataan SET FMTONLY ON. Untuk informasi selengkapnya, lihat SET FMTONLY (Transact-SQL).

Lihat juga

Berlaku untuk