DbDataAdapter.FillSchema Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- 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:
AutoIncrement. ve AutoIncrementSeed öğesini ayrı olarak ayarlamanız AutoIncrementStep gerekir.
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ış AddWithKey
olarak 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
- 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:
AutoIncrement. ve AutoIncrementSeed öğesini ayrı olarak ayarlamanız AutoIncrementStep gerekir.
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ış AddWithKey
olarak 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
- 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:
AutoIncrement. ve AutoIncrementSeed öğesini ayrı olarak ayarlamanız AutoIncrementStep gerekir.
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ış AddWithKey
olarak 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
- 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:
AutoIncrement. ve AutoIncrementSeed öğesini ayrı olarak ayarlamanız AutoIncrementStep gerekir.
FillSchemaayrıca ve Constraints özelliklerini aşağıdaki kurallara göre yapılandırılırPrimaryKey:
için
DataTable
bir PrimaryKey zaten tanımlanmışsa veyaDataTable
veri içeriyorsa özelliğiPrimaryKey
ayarlanmaz.bir veya daha fazla birincil anahtar sütunu tarafından SelectCommanddöndürülürse, bunlar için
DataTable
birincil 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
DataTable
birincil 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ış AddWithKey
olarak 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
- 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:
AutoIncrement. ve AutoIncrementSeed öğesini ayrı olarak ayarlamanız AutoIncrementStep gerekir.
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ış AddWithKey
olarak 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).