Aracılığıyla paylaş


DbDataAdapter.FillSchema Yöntem

Tanım

öğesine bir DataTableDataSet ekler ve şemayı veri kaynağındaki şemayla eşleşecek şekilde yapılandırılır.

Aşırı Yüklemeler

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

Belirtilen DataSet öğesine bir DataTable ekler ve şemayı, belirtilen SchemaTypetemelinde veri kaynağındakiyle eşleşecek şekilde yapılandırılır.

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Belirtilen DataTable öğesinin şemasını belirtilen SchemaType, komut dizesine ve CommandBehavior değerlere göre yapılandırılır.

FillSchema(DataSet, SchemaType, String)

Belirtilen öğesine bir DataTable ekler ve şemayı, belirtilen SchemaType ve DataTabletemel alınarak veri kaynağındaki şemayla eşleşecek şekilde yapılandırılır.DataSet

FillSchema(DataTable, SchemaType)

Belirtilen öğesinin şemasını belirtilen DataTableSchemaTypeöğesine göre yapılandırıyor.

FillSchema(DataSet, SchemaType)

Belirtilen DataSet öğesine adlandırılmış bir DataTable "Tablo" ekler ve şemayı belirtilen SchemaTypetemelinde veri kaynağındakiyle eşleşecek şekilde yapılandırılır.

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

Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs

Belirtilen DataSet öğesine bir DataTable ekler ve şemayı, belirtilen SchemaTypetemelinde veri kaynağındakiyle eşleşecek şekilde yapılandırılır.

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()

Parametreler

dataSet
DataSet

DataSet veri kaynağındaki şemayla doldurulacak.

schemaType
SchemaType

Değerlerden SchemaType biri.

command
IDbCommand

Veri kaynağından satırları almak için kullanılan SQL SELECT deyimi.

srcTable
String

Tablo eşlemesi için kullanılacak kaynak tablonun adı.

behavior
CommandBehavior

Değerlerden CommandBehavior biri.

Döndürülenler

Veri kaynağından döndürülen şema bilgilerini içeren bir nesne dizisi DataTable .

Açıklamalar

FillSchema yöntemi, kullanarak veri kaynağından şemayı SelectCommandalır. ile ilişkilendirilmiş bağlantı nesnesinin SelectCommand geçerli olması gerekir, ancak açık olması gerekmez. Bağlantı çağrılmadan önce FillSchema kapatılırsa, verileri almak için açılır ve ardından kapatılır. Bağlantı çağrılmadan önce FillSchema açıksa açık kalır.

bir FillSchema işlem hedefine DataSetbir DataTable ekler. Ardından sütunları öğesine ekler DataColumnCollectionDataTableve veri kaynağında varsa aşağıdaki DataColumn özellikleri yapılandırılır:

FillSchemaayrıca ve Constraints özelliklerini aşağıdaki kurallara göre yapılandırılırPrimaryKey:

  • bir veya daha fazla birincil anahtar sütunu tarafından SelectCommanddöndürülürse, bunlar için DataTablebirincil anahtar sütunları olarak kullanılır.

  • Hiçbir birincil anahtar sütunu döndürülmezse ancak benzersiz sütunlar döndürülmezse, benzersiz sütunlar birincil anahtar olarak kullanılır ve yalnızca tüm benzersiz sütunlar iptal edilemezse kullanılır. Sütunlardan herhangi biri null atanabilirse, öğesine ConstraintCollectionbir UniqueConstraint eklenir, ancak PrimaryKey özelliği ayarlanmaz.

  • Hem birincil anahtar sütunları hem de benzersiz sütunlar döndürülürse, birincil anahtar sütunları için DataTablebirincil anahtar sütunları olarak kullanılır.

Birincil anahtarların ve benzersiz kısıtlamaların önceki kurallara göre eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki sütun veya sütunlarda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanıyorsa, kümelenmiş dizindeki sütunların adları döndürülür. Birincil anahtar sütunlarının adını veya adlarını döndürmek için, birincil anahtar dizininin adını belirten SELECT deyimiyle bir sorgu ipucu kullanın. Sorgu ipuçlarını belirtme hakkında daha fazla bilgi için bkz. İpuçları (Transact-SQL) - Sorgu.

bir doldurma DataTablesırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.IDataAdapter Gelen veriler adsız sütunlar içeriyorsa, "Sütun1", "Sütun2" vb. desenine göre yerleştirilir DataSet . Her sonuç kümesine DataSet birden çok sonuç kümesi eklendiğinde ayrı bir tabloya yerleştirilir. Ek sonuç kümeleri belirtilen tablo adına integral değerleri eklenerek adlandırılır (örneğin, "Tablo", "Tablo1", "Tablo2" vb.). Uygulamanız sütun ve tablo adları kullanıyorsa, bu adlandırma desenleriyle çakışma olmadığından emin olun.

yöntemi, FillSchema adları yalnızca büyük/küçük harfe DataSet göre farklılık gösteren birden çok DataTable nesne içeren senaryoları destekler. Böyle durumlarda, FillSchema karşılık gelen tabloyu bulmak için büyük/küçük harfe duyarlı bir karşılaştırma gerçekleştirir ve tam eşleşme yoksa yeni bir tablo oluşturur. Aşağıdaki C# kodu bu davranışı gösterir.

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".  

çağrılırsa FillSchema ve DataSet adı yalnızca büyük/küçük harfe göre farklılık gösteren bir DataTable ad içeriyorsa, bu DataTable güncelleştirilir. Bu senaryoda, karşılaştırma büyük/küçük harfe duyarsızdır. Aşağıdaki C# kodu bu davranışı gösterir.

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 satır döndürmez. Fill bir öğesine satır eklemek için DataTableyöntemini kullanın.

Not

Birden çok sonuç döndüren toplu SQL deyimlerini işlerken, FillSchema OLE DB için .NET Framework Veri Sağlayıcısı uygulaması yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için olarak ayarlanmış AddWithKeyolarak MissingSchemaAction kullanınFill.

kullanırkenFillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyimine for BROWSE yan tümcesi ekler. Kullanıcı, SET FMTONLY ON deyimlerinin kullanımına müdahale gibi olası yan etkilerin farkında olmalıdır. Daha fazla bilgi için bkz . SET FMTONLY (Transact-SQL).

Devralanlara Notlar

Yöntemin FillSchema(DataSet, SchemaType) bu uygulaması korunur ve .NET Framework veri sağlayıcısı tarafından kullanılmak üzere tasarlanmıştır.

Ayrıca bkz.

Şunlara uygulanır

FillSchema(DataTable, SchemaType, IDbCommand, CommandBehavior)

Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs

Belirtilen DataTable öğesinin şemasını belirtilen SchemaType, komut dizesine ve CommandBehavior değerlere göre yapılandırılır.

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

Parametreler

dataTable
DataTable

DataTable veri kaynağındaki şemayla doldurulacak.

schemaType
SchemaType

Değerlerden SchemaType biri.

command
IDbCommand

Veri kaynağından satırları almak için kullanılan SQL SELECT deyimi.

behavior
CommandBehavior

Değerlerden CommandBehavior biri.

Döndürülenler

DataTable Veri kaynağından döndürülen şema bilgilerini içeren nesne.

Açıklamalar

FillSchema yöntemi, kullanarak veri kaynağından şemayı SelectCommandalır. ile ilişkilendirilmiş bağlantı nesnesinin SelectCommand geçerli olması gerekir, ancak açık olması gerekmez. Bağlantı çağrılmadan önce FillSchema kapatılırsa, verileri almak için açılır ve ardından kapatılır. Bağlantı çağrılmadan önce FillSchema açıksa açık kalır.

bir FillSchema işlem hedefine DataSetbir DataTable ekler. Ardından sütunları öğesine ekler DataColumnCollectionDataTableve veri kaynağında varsa aşağıdaki DataColumn özellikleri yapılandırılır:

FillSchemaayrıca ve Constraints özelliklerini aşağıdaki kurallara göre yapılandırılırPrimaryKey:

  • bir veya daha fazla birincil anahtar sütunu tarafından SelectCommanddöndürülürse, bunlar için DataTablebirincil anahtar sütunları olarak kullanılır.

  • Hiçbir birincil anahtar sütunu döndürülmezse ancak benzersiz sütunlar döndürülmezse, benzersiz sütunlar birincil anahtar olarak kullanılır ve yalnızca tüm benzersiz sütunlar iptal edilemezse kullanılır. Sütunlardan herhangi biri null atanabilirse, öğesine ConstraintCollectionbir UniqueConstraint eklenir, ancak PrimaryKey özelliği ayarlanmaz.

  • Hem birincil anahtar sütunları hem de benzersiz sütunlar döndürülürse, birincil anahtar sütunları için DataTablebirincil anahtar sütunları olarak kullanılır.

Birincil anahtarların ve benzersiz kısıtlamaların önceki kurallara göre eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki sütun veya sütunlarda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanıyorsa, kümelenmiş dizindeki sütunların adları döndürülür. Birincil anahtar sütunlarının adını veya adlarını döndürmek için, birincil anahtar dizininin adını belirten SELECT deyimiyle bir sorgu ipucu kullanın. Sorgu ipuçlarını belirtme hakkında daha fazla bilgi için bkz. İpuçları (Transact-SQL) - Sorgu.

bir doldurma DataTablesırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.IDataAdapter Gelen veriler adsız sütunlar içeriyorsa, "Sütun1", "Sütun2" vb. desenine göre yerleştirilir DataSet . Her sonuç kümesine DataSet birden çok sonuç kümesi eklendiğinde ayrı bir tabloya yerleştirilir. Ek sonuç kümeleri belirtilen tablo adına integral değerleri eklenerek adlandırılır (örneğin, "Tablo", "Tablo1", "Tablo2" vb.). Uygulamanız sütun ve tablo adları kullanıyorsa, bu adlandırma desenleriyle çakışma olmadığından emin olun.

FillSchema satır döndürmez. Fill bir öğesine satır eklemek için DataTableyöntemini kullanın.

Not

Birden çok sonuç döndüren toplu SQL deyimlerini işlerken, FillSchema OLE DB için .NET Framework Veri Sağlayıcısı uygulaması yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için olarak ayarlanmış AddWithKeyolarak MissingSchemaAction kullanınFill.

kullanırkenFillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyimine for BROWSE yan tümcesi ekler. Kullanıcı, SET FMTONLY ON deyimlerinin kullanımına müdahale gibi olası yan etkilerin farkında olmalıdır. Daha fazla bilgi için bkz . SET FMTONLY (Transact-SQL).

Devralanlara Notlar

Yöntemin FillSchema(DataSet, SchemaType) bu uygulaması korunur ve .NET Framework veri sağlayıcısı tarafından kullanılmak üzere tasarlanmıştır.

Ayrıca bkz.

Şunlara uygulanır

FillSchema(DataSet, SchemaType, String)

Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs

Belirtilen öğesine bir DataTable ekler ve şemayı, belirtilen SchemaType ve DataTabletemel alınarak veri kaynağındaki şemayla eşleşecek şekilde yapılandırılır.DataSet

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()

Parametreler

dataSet
DataSet

Şemayı eklemek için A DataSet .

schemaType
SchemaType

Şemanın SchemaType nasıl ekleneceğini belirten değerlerden biri.

srcTable
String

Tablo eşlemesi için kullanılacak kaynak tablonun adı.

Döndürülenler

öğesine eklenen bir nesne koleksiyonuna DataTableDataSetbaşvuru.

Özel durumlar

Şemanın alınacağı kaynak tablo bulunamadı.

Örnekler

Aşağıdaki örnek, SqlDataAdapterbir öğesini şemayla doldurmak DataSet için türetilmiş sınıfını kullanır ve döndürür 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

Açıklamalar

Bu yöntem, kullanarak veri kaynağından SelectCommandşema bilgilerini alır.

bir FillSchema işlem hedefine DataSetbir DataTable ekler. Ardından sütunları öğesine ekler DataColumnCollectionDataTableve veri kaynağında varsa aşağıdaki DataColumn özellikleri yapılandırılır:

FillSchemaayrıca ve Constraints özelliklerini aşağıdaki kurallara göre yapılandırılırPrimaryKey:

  • bir veya daha fazla birincil anahtar sütunu tarafından SelectCommanddöndürülürse, bunlar için DataTablebirincil anahtar sütunları olarak kullanılır.

  • Hiçbir birincil anahtar sütunu döndürülmezse ancak benzersiz sütunlar döndürülmezse, benzersiz sütunlar birincil anahtar olarak kullanılır ve yalnızca tüm benzersiz sütunlar iptal edilemezse kullanılır. Sütunlardan herhangi biri null atanabilirse, öğesine ConstraintCollectionbir UniqueConstraint eklenir, ancak PrimaryKey özelliği ayarlanmaz.

  • Hem birincil anahtar sütunları hem de benzersiz sütunlar döndürülürse, birincil anahtar sütunları için DataTablebirincil anahtar sütunları olarak kullanılır.

Birincil anahtarların ve benzersiz kısıtlamaların önceki kurallara göre eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki sütun veya sütunlarda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanıyorsa, kümelenmiş dizindeki sütunların adları döndürülür. Birincil anahtar sütunlarının adını veya adlarını döndürmek için, birincil anahtar dizininin adını belirten SELECT deyimiyle bir sorgu ipucu kullanın. Sorgu ipuçlarını belirtme hakkında daha fazla bilgi için bkz. İpuçları (Transact-SQL) - Sorgu.

Birincil anahtar bilgileri, anahtar sütunları eşleşen satırları bulmak ve değiştirmek için kullanılır Fill . İstenen davranış bu değilse, şema bilgilerini istemeden kullanın Fill .

bir doldurma DataTablesırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.DbDataAdapter Gelen veriler adsız sütunlar içeriyorsa, "Sütun1", "Sütun2" vb. desenine göre yerleştirilir DataSet . Her sonuç kümesine DataSet birden çok sonuç kümesi eklendiğinde ayrı bir tabloya yerleştirilir. Ek sonuç kümeleri belirtilen tablo adına integral değerleri eklenerek adlandırılır (örneğin, "Tablo", "Tablo1", "Tablo2" vb.). Uygulamanız sütun ve tablo adları kullanıyorsa, bu adlandırma desenleriyle çakışma olmadığından emin olun.

yöntemi, FillSchema adları yalnızca büyük/küçük harfe DataSet göre farklılık gösteren birden çok DataTable nesne içeren senaryoları destekler. Böyle durumlarda, FillSchema karşılık gelen tabloyu bulmak için büyük/küçük harfe duyarlı bir karşılaştırma gerçekleştirir ve tam eşleşme yoksa yeni bir tablo oluşturur. Aşağıdaki C# kodu bu davranışı gösterir.

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".  

çağrılırsa FillSchema ve DataSet adı yalnızca büyük/küçük harfe göre farklılık gösteren bir DataTable ad içeriyorsa, bu DataTable güncelleştirilir. Bu senaryoda, karşılaştırma büyük/küçük harfe duyarsızdır. Aşağıdaki C# kodu bu davranışı gösterir.

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.  

IDbConnection Select komutuyla ilişkilendirilmiş nesne geçerli olmalıdır, ancak açılması gerekmez. IDbConnection çağrılmadan önce FillSchema kapatılırsa, verileri almak için açılır ve ardından kapatılır. Bağlantı çağrılmadan önce FillSchema açıksa açık bırakılır.

Not

Birden çok sonuç döndüren toplu SQL deyimlerini işlerken, FillSchema OLE DB için .NET Framework Veri Sağlayıcısı uygulaması yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için olarak ayarlanmış AddWithKeyolarak MissingSchemaAction kullanınFill.

kullanırkenFillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyimine for BROWSE yan tümcesi ekler. Kullanıcı, SET FMTONLY ON deyimlerinin kullanımına müdahale gibi olası yan etkilerin farkında olmalıdır. Daha fazla bilgi için bkz . SET FMTONLY (Transact-SQL).

Ayrıca bkz.

Şunlara uygulanır

FillSchema(DataTable, SchemaType)

Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs

Belirtilen öğesinin şemasını belirtilen DataTableSchemaTypeöğesine göre yapılandırıyor.

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

Parametreler

dataTable
DataTable

DataTable veri kaynağındaki şemayla doldurulacak.

schemaType
SchemaType

Değerlerden SchemaType biri.

Döndürülenler

DataTable Veri kaynağından döndürülen şema bilgilerini içeren bir.

Örnekler

Aşağıdaki örnek, SqlDataAdapterbir öğesini şemayla doldurmak DataSet için türetilmiş sınıfını kullanır ve döndürür 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

Açıklamalar

FillSchema yöntemi, kullanarak veri kaynağından şemayı SelectCommandalır. ile ilişkilendirilmiş bağlantı nesnesinin SelectCommand geçerli olması gerekir, ancak açık olması gerekmez. Bağlantı çağrılmadan önce FillSchema kapatılırsa, verileri almak için açılır ve ardından kapatılır. Bağlantı çağrılmadan önce FillSchema açıksa açık kalır.

İşlem FillSchema bir DataTabledöndürür. Ardından sütunları öğesine ekler DataColumnCollectionDataTableve veri kaynağında varsa aşağıdaki DataColumn özellikleri yapılandırılır:

FillSchemaayrıca ve Constraints özelliklerini aşağıdaki kurallara göre yapılandırılırPrimaryKey:

  • için DataTablebir PrimaryKey zaten tanımlanmışsa veya DataTable veri içeriyorsa özelliği PrimaryKey ayarlanmaz.

  • bir veya daha fazla birincil anahtar sütunu tarafından SelectCommanddöndürülürse, bunlar için DataTablebirincil anahtar sütunları olarak kullanılır.

  • Hiçbir birincil anahtar sütunu döndürülmezse ancak benzersiz sütunlar döndürülmezse, benzersiz sütunlar birincil anahtar olarak kullanılır ve yalnızca tüm benzersiz sütunlar iptal edilemezse kullanılır. Sütunlardan herhangi biri null atanabilirse, öğesine ConstraintCollectionbir UniqueConstraint eklenir, ancak PrimaryKey özelliği ayarlanmaz.

  • Hem birincil anahtar sütunları hem de benzersiz sütunlar döndürülürse, birincil anahtar sütunları için DataTablebirincil anahtar sütunları olarak kullanılır.

Birincil anahtarların ve benzersiz kısıtlamaların önceki kurallara göre eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın. Bu işlem, sunucuya birkaç gidiş dönüş gerektirebilir.

SQL Server tablosundaki sütun veya sütunlarda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanıyorsa, kümelenmiş dizindeki sütunların adları döndürülür. Birincil anahtar sütunlarının adını veya adlarını döndürmek için, birincil anahtar dizininin adını belirten SELECT deyimiyle bir sorgu ipucu kullanın. Sorgu ipuçlarını belirtme hakkında daha fazla bilgi için bkz. İpuçları (Transact-SQL) - Sorgu.

bir doldurma DataTablesırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.DbDataAdapter Gelen veriler adsız sütunlar içeriyorsa, "Sütun1", "Sütun2" vb. desenine göre yerleştirilir DataSet . Her sonuç kümesine DataSet birden çok sonuç kümesi eklendiğinde ayrı bir tabloya yerleştirilir. Ek sonuç kümeleri belirtilen tablo adına integral değerleri eklenerek adlandırılır (örneğin, "Tablo", "Tablo1", "Tablo2" vb.). Uygulamanız sütun ve tablo adları kullanıyorsa, bu adlandırma desenleriyle çakışma olmadığından emin olun.

FillSchema satır döndürmez. Fill bir öğesine satır eklemek için DataTableyöntemini kullanın.

Not

Birden çok sonuç döndüren toplu SQL deyimlerini işlerken, FillSchema OLE DB için .NET Framework Veri Sağlayıcısı uygulaması yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için olarak ayarlanmış AddWithKeyolarak MissingSchemaAction kullanınFill.

kullanırkenFillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyimine for BROWSE yan tümcesi ekler. Kullanıcı, SET FMTONLY ON deyimlerinin kullanımına müdahale gibi olası yan etkilerin farkında olmalıdır. Daha fazla bilgi için bkz . SET FMTONLY (Transact-SQL).

Ayrıca bkz.

Şunlara uygulanır

FillSchema(DataSet, SchemaType)

Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs
Kaynak:
DbDataAdapter.cs

Belirtilen DataSet öğesine adlandırılmış bir DataTable "Tablo" ekler ve şemayı belirtilen SchemaTypetemelinde veri kaynağındakiyle eşleşecek şekilde yapılandırılır.

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()

Parametreler

dataSet
DataSet

Şemayı eklemek için A DataSet .

schemaType
SchemaType

Şemanın SchemaType nasıl ekleneceğini belirten değerlerden biri.

Döndürülenler

öğesine eklenen bir nesne koleksiyonuna DataTableDataSetbaşvuru.

Uygulamalar

Örnekler

Aşağıdaki örnek, SqlDataAdapterbir öğesini şemayla doldurmak DataSet için türetilmiş sınıfını kullanır ve döndürür 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

Açıklamalar

Bu yöntem, kullanarak veri kaynağından SelectCommandşema bilgilerini alır.

bir FillSchema işlem hedefine DataSetbir DataTable ekler. Ardından sütunları öğesine ekler DataColumnCollectionDataTableve veri kaynağında varsa aşağıdaki DataColumn özellikleri yapılandırılır:

FillSchemaayrıca ve Constraints özelliklerini aşağıdaki kurallara göre yapılandırılırPrimaryKey:

  • bir veya daha fazla birincil anahtar sütunu tarafından SelectCommanddöndürülürse, bunlar için DataTablebirincil anahtar sütunları olarak kullanılır.

  • Hiçbir birincil anahtar sütunu döndürülmezse ancak benzersiz sütunlar döndürülmezse, benzersiz sütunlar birincil anahtar olarak kullanılır ve yalnızca tüm benzersiz sütunlar iptal edilemezse kullanılır. Sütunlardan herhangi biri null atanabilirse, öğesine ConstraintCollectionbir UniqueConstraint eklenir, ancak PrimaryKey özelliği ayarlanmaz.

  • Hem birincil anahtar sütunları hem de benzersiz sütunlar döndürülürse, birincil anahtar sütunları için DataTablebirincil anahtar sütunları olarak kullanılır.

Birincil anahtarların ve benzersiz kısıtlamaların önceki kurallara göre eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki sütun veya sütunlarda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanıyorsa, kümelenmiş dizindeki sütunların adları döndürülür. Birincil anahtar sütunlarının adını veya adlarını döndürmek için, birincil anahtar dizininin adını belirten SELECT deyimiyle bir sorgu ipucu kullanın. Sorgu ipuçlarını belirtme hakkında daha fazla bilgi için bkz. İpuçları (Transact-SQL) - Sorgu.

Birincil anahtar bilgileri, anahtar sütunları eşleşen satırları bulmak ve değiştirmek için kullanılır Fill . İstenen davranış bu değilse, şema bilgilerini istemeden kullanın Fill .

bir doldurma DataTablesırasında yinelenen sütunlarla karşılaşırsa, "columnname1", "columnname2", "columnname3" vb. desenini kullanarak izleyen sütunlar için adlar oluşturur.IDataAdapter Gelen veriler adsız sütunlar içeriyorsa, "Sütun1", "Sütun2" vb. desenine göre yerleştirilir DataSet . Her sonuç kümesine DataSet birden çok sonuç kümesi eklendiğinde ayrı bir tabloya yerleştirilir. Ek sonuç kümeleri belirtilen tablo adına integral değerleri eklenerek adlandırılır (örneğin, "Tablo", "Tablo1", "Tablo2" vb.). Uygulamanız sütun ve tablo adları kullanıyorsa, bu adlandırma desenleriyle çakışma olmadığından emin olun.

IDbConnection Select komutuyla ilişkilendirilmiş nesne geçerli olmalıdır, ancak açılması gerekmez. IDbConnection çağrılmadan önce FillSchema kapatılırsa, verileri almak için açılır ve ardından kapatılır. Bağlantı çağrılmadan önce FillSchema açıksa açık bırakılır.

Not

Birden çok sonuç döndüren toplu SQL deyimlerini işlerken, FillSchema OLE DB için .NET Framework Veri Sağlayıcısı uygulaması yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için olarak ayarlanmış AddWithKeyolarak MissingSchemaAction kullanınFill.

kullanırkenFillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyimine for BROWSE yan tümcesi ekler. Kullanıcı, SET FMTONLY ON deyimlerinin kullanımına müdahale gibi olası yan etkilerin farkında olmalıdır. Daha fazla bilgi için bkz . SET FMTONLY (Transact-SQL).

Ayrıca bkz.

Şunlara uygulanır