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

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

Belirtilen öğesine bir DataTable ekler ve şemayı, belirtilen DataSetSchemaTypetemelinde veri kaynağındaki şemayla 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ır.

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

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

Belirtilen öğesine bir DataTable ekler ve şemayı, belirtilen DataSetSchemaTypetemelinde veri kaynağındaki şemayla 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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
protected virtual System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, System.Data.IDbCommand command, 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * System.Data.IDbCommand * string * System.Data.CommandBehavior -> System.Data.DataTable[]
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ır 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 .

Öznitelikler

Açıklamalar

yöntemi, FillSchema 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ütununa DataColumnCollectionDataTablesütunlar ekler ve 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 öğesine eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki bir sütun veya sütunda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanmışsa, 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 sırasında DataTableyinelenen sütunlarla karşılaşırsa, "columnname1", "columnname 2", "columnname3" vb. desenini kullanarak sonraki 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 ilgili 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 duyarlı değildir. 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 hiçbir satır döndürmez. bir öğesine Fill satır eklemek için DataTableyöntemini kullanın.

Uyarı

Birden çok sonuç döndüren batch SQL deyimlerini işlerken, OLE DB için .NET Framework Veri Sağlayıcısı uygulaması FillSchema yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için, Fill ile değerini MissingSchemaAction olarak AddWithKeyayarlayın.

kullanırken FillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyime 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önteminin 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
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from command) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType * System.Data.IDbCommand * System.Data.CommandBehavior -> System.Data.DataTable
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ır 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.

Öznitelikler

Açıklamalar

yöntemi, FillSchema 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ütununa DataColumnCollectionDataTablesütunlar ekler ve 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 öğesine eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki bir sütun veya sütunda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanmışsa, 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 sırasında DataTableyinelenen sütunlarla karşılaşırsa, "columnname1", "columnname 2", "columnname3" vb. desenini kullanarak sonraki 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 hiçbir satır döndürmez. bir öğesine Fill satır eklemek için DataTableyöntemini kullanın.

Uyarı

Birden çok sonuç döndüren batch SQL deyimlerini işlerken, OLE DB için .NET Framework Veri Sağlayıcısı uygulaması FillSchema yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için, Fill ile değerini MissingSchemaAction olarak AddWithKeyayarlayın.

kullanırken FillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyime 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önteminin 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
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
public System.Data.DataTable[] FillSchema(System.Data.DataSet dataSet, System.Data.SchemaType schemaType, string srcTable);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType * string -> System.Data.DataTable[]
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.

Öznitelikler

Ö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ütununa DataColumnCollectionDataTablesütunlar ekler ve 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 öğesine eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki bir sütun veya sütunda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanmışsa, 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 sırasında DataTableyinelenen sütunlarla karşılaşırsa, "columnname1", "columnname 2", "columnname3" vb. desenini kullanarak sonraki 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 ilgili 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 duyarlı değildir. 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şkili 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.

Uyarı

Birden çok sonuç döndüren batch SQL deyimlerini işlerken, OLE DB için .NET Framework Veri Sağlayıcısı uygulaması FillSchema yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için, Fill ile değerini MissingSchemaAction olarak AddWithKeyayarlayın.

kullanırken FillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyime 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
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);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataTable * System.Data.SchemaType -> System.Data.DataTable
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.

Öznitelikler

Ö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

yöntemi, FillSchema 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ütununa DataColumnCollectionDataTablesütunlar ekler ve 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, PrimaryKey özelliği 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 öğesine 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 bir sütun veya sütunda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanmışsa, 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 sırasında DataTableyinelenen sütunlarla karşılaşırsa, "columnname1", "columnname 2", "columnname3" vb. desenini kullanarak sonraki 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 hiçbir satır döndürmez. bir öğesine Fill satır eklemek için DataTableyöntemini kullanın.

Uyarı

Birden çok sonuç döndüren batch SQL deyimlerini işlerken, OLE DB için .NET Framework Veri Sağlayıcısı uygulaması FillSchema yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için, Fill ile değerini MissingSchemaAction olarak AddWithKeyayarlayın.

kullanırken FillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyime 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
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ır.

public:
 override cli::array <System::Data::DataTable ^> ^ FillSchema(System::Data::DataSet ^ dataSet, System::Data::SchemaType schemaType);
[System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
public override 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);
[<System.Diagnostics.CodeAnalysis.RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")>]
override this.FillSchema : System.Data.DataSet * System.Data.SchemaType -> System.Data.DataTable[]
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

Öznitelikler

Ö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ütununa DataColumnCollectionDataTablesütunlar ekler ve 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 öğesine eklendiğini ConstraintCollection , ancak diğer kısıtlama türlerinin eklenmediğini unutmayın.

SQL Server tablosundaki bir sütun veya sütunda benzersiz bir kümelenmiş dizin tanımlanmışsa ve birincil anahtar kısıtlaması ayrı bir sütun kümesinde tanımlanmışsa, 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 sırasında DataTableyinelenen sütunlarla karşılaşırsa, "columnname1", "columnname 2", "columnname3" vb. desenini kullanarak sonraki 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şkili 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.

Uyarı

Birden çok sonuç döndüren batch SQL deyimlerini işlerken, OLE DB için .NET Framework Veri Sağlayıcısı uygulaması FillSchema yalnızca ilk sonuç için şema bilgilerini alır. Birden çok sonuç için şema bilgilerini almak için, Fill ile değerini MissingSchemaAction olarak AddWithKeyayarlayın.

kullanırken FillSchema, SQL Server için .NET Framework Veri Sağlayıcısı yürütülmekte olan deyime 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