OdbcDataReader.GetSchemaTable 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.
sütun meta verilerini DataTableaçıklayan bir OdbcDataReader döndürür.
public:
virtual System::Data::DataTable ^ GetSchemaTable();
public:
override System::Data::DataTable ^ GetSchemaTable();
public System.Data.DataTable GetSchemaTable();
public override System.Data.DataTable GetSchemaTable();
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Function GetSchemaTable () As DataTable
Public Overrides Function GetSchemaTable () As DataTable
Döndürülenler
DataTable Sütun meta verilerini açıklayan.
Uygulamalar
Özel durumlar
Kapalı OdbcDataReader .
Açıklamalar
GetSchemaTable yöntemi, her sütunla ilgili meta verileri aşağıdaki sırayla döndürür:
| DataReader sütunu | Description |
|---|---|
| ColumnName | Sütunun adı; bu benzersiz olmayabilir. Sütun adı belirlenemezse null bir değer döndürülür. Bu ad her zaman geçerli görünümdeki veya komut metnindeki sütunun en son adlandırmasını yansıtır. |
| ColumnOrdinal | Sütunun sıfır tabanlı sıralı. Bu sütun null değer içeremez. |
| Sütun Boyutu | Sütundaki bir değerin mümkün olan en uzun uzunluğu. Sabit uzunlukta veri türü kullanan sütunlar için bu, veri türünün boyutudur. |
| Numericprecision | Sayısal bir veri türüyse DbType bu, sütunun en yüksek duyarlığıdır. Duyarlık, sütunun tanımına bağlıdır. Sayısal bir veri türü değilse DbType , bu sütundaki verileri kullanmayın. Temel alınan ODBC sürücüsü sayısal olmayan bir veri türü için bir duyarlık değeri döndürürse, bu değer şema tablosunda kullanılır. |
| Numericscale | ise DbTypeDecimal, ondalık ayırıcının sağındaki basamak sayısıdır. Aksi takdirde, bu null bir değerdir. Temel alınan ODBC sürücüsü sayısal olmayan bir veri türü için bir duyarlık değeri döndürürse, bu değer şema tablosunda kullanılır. |
| VeriTürü | ortak dil çalışma zamanı türüyle DbTypeeşler. |
| ProviderType | Temel alınan sürücü türü. |
| IsLong |
true sütunda çok uzun veriler içeren bir İkili Uzun Nesne (BLOB) varsa. Çok uzun verilerin tanımı sürücüye özgüdür. |
| Allowdbnull |
true tüketici sütunu null değere ayarlayabilirse veya sürücü, tüketicinin sütunu null değere ayarlayıp ayarlayamayacağını belirleyemiyorsa. Tersi durumda false. Bir sütun null değere ayarlanamasa bile null değerler içerebilir. |
| IsReadOnly |
true sütun değiştirilemiyorsa; aksi takdirde false. |
| IsRowVersion | Sütunda yazılamayan kalıcı bir satır tanımlayıcısı varsa ve satırın kimliğini belirlemek dışında anlamlı bir değeri yoksa ayarlayın. |
| IsUnique |
true: Temel tablodaki iki satır (BaseTableName içinde döndürülen tablo) bu sütunda aynı değere sahip olamaz. IsUnique, sütunun tek başına bir anahtarı temsil ettiği veya yalnızca bu sütun için geçerli olan UNIQUE türünde bir kısıtlama olması durumunda garanti edilir true .false: Sütun, temel tabloda yinelenen değerler içerebilir. Bu sütun için varsayılan değerdir false. |
| Iskey |
true: Sütun, satır kümesinde bir araya gelen ve satırı benzersiz olarak tanımlayan bir sütun kümesidir. IsKey olarak ayarlanmış true sütun kümesinin satır kümesindeki bir satırı benzersiz olarak tanımlaması gerekir. Bu sütun kümesinin en az sayıda sütun olması gerekmez. Bu sütun kümesi temel tablo birincil anahtarından, benzersiz bir kısıtlamadan veya benzersiz bir dizinden oluşturulabilir.false: Sütunun satırı benzersiz olarak tanımlaması gerekmez. |
| IsAutoIncrement |
true sütun sabit artımlarla yeni satırlara değer atarsa; aksi takdirde false. Bu sütun için varsayılan değerdir false. |
| BaseSchemaName | Sütunu içeren veri kaynağındaki şemanın adı. Temel katalog adı belirlenemiyorsa NULL. Bu sütun için varsayılan değer null değerdir. |
| BaseCatalogName | Sütunu içeren veri deposundaki kataloğun adı. Temel katalog adı belirlenemiyorsa NULL. Bu sütun için varsayılan değer null değerdir. |
| BaseTableName | Sütunu içeren veri deposundaki tablonun veya görünümün adı. Temel tablo adı belirlenemiyorsa null değer. Bu sütunun varsayılan değeri null değerdir. |
| BaseColumnName | Veri deposundaki sütunun adı. Diğer ad kullanıldıysa bu, ColumnName sütununda döndürülen sütun adından farklı olabilir. Temel sütun adı belirlenemiyorsa veya satır kümesi sütunu türetildiyse ancak veri deposundaki bir sütunla aynı değilse null değer. Bu sütun için varsayılan değer null değerdir. |
Sonuç kümesindeki her sütun için bir satır döndürülür.
ODBC için .NET Framework Veri Sağlayıcısı, SQLPrepare, SQLExecute veya SQLExecuteDirect işlevlerinden biri çağrıldıktan sonra odbc sürücüsünden meta veri bilgilerinin sağlandığını varsayar. "SchemaOnly" komut davranışının düzgün çalışması için SQLPrepare gerekli meta veri bilgilerini döndürmelidir. Tüm ODBC sürücüleri bu işlevi desteklemez veya meta veri bilgilerini döndürmez. Böyle durumlarda SchemaTable'daki bilgilerin bir bölümü veya tümü eksik olur. SQLPrepare çağrıldıktan sonra, veri sağlayıcısı sorgu sonuçlarındaki her sütunla ilgili meta veri bilgilerini bulmak için ODBC SQLColAttribute işlevini çağırır (örneğin, IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Temel alınan sürücü bu bilgilerden bazılarını döndürmezse SchemaTable'daki ilgili değerler doğru ayarlanmaz.
ODBC için .NET Framework Veri Sağlayıcısı, her tablonun anahtar bilgilerini almak için SQLPrimaryKeys da çağırır. Temel alınan ODBC sürücüsü bu işlevi desteklemiyorsa, veri sağlayıcısı SQLStatistics'i çağırır ve tablo için birincil anahtar olarak benzersiz dizinlerden birini seçer. Bu, istediğiniz sonuçları her zaman vermeyebilir.
OdbcCommandBuilder doğru çalışabilmesi için tablonun birincil anahtarlarının doğru tanımlanmasını gerektirmektedir. Sorgu sonuçlarındaki her sütun için BaseTableName döndürülmezse, ODBC için .NET Framework Veri Sağlayıcısı sorguda yer alan tablo adlarını bulmak için SQL deyimini ayrıştırmaya çalışır. Bu, UPDATE, INSERT, DELETE ve basit SELECT deyimleriyle çalışır, ancak birleştirmeleri temel alan saklı yordamlar veya SELECT deyimleriyle çalışmaz. Bu tabloda şema bilgilerinin bir bölümü veya tümü eksikse, doğru INSERT, OdbcCommandBuilder UPDATE veya DELETE deyimlerini otomatik olarak oluşturmak için şema bilgileri yetersiz olduğundan doğru şekilde çalışmaz.
Meta veri sütunlarının doğru bilgileri döndürdiğinden emin olmak için, davranış parametresi KeyInfo olarak ayarlanmış olarak çağırmalısınız ExecuteReader . Aksi takdirde, şema tablosundaki sütunlardan bazıları varsayılan, null veya yanlış veri döndürebilir.
ODBC sürücüsü aracılığıyla ODBC.NET Oracle kullandığınızda, diğer ad kullanılan anahtar sütunları anahtar olarak tanınmaz. Bu, OdbcDataReader'ın şema tablosundaki IsKey ve IsUnique sütunlarını etkiler. Ayrıca OdbcCommandBuilder'ın güncelleştirme mantığı oluşturma yeteneğini de etkiler. Birincil anahtar sütunu için diğer ad kullanmamayı düşünün.
Note
Microsoft Jet ODBC sürücüsü, boş değer atanabilir olup olmadıklarına bakılmaksızın benzersiz dizin ve birincil anahtar sütunlarını her zaman null atanabilir olarak döndürür. Sürücü ayrıca birincil anahtar bilgilerini döndürmez; aralarında ayrım yapmadan yalnızca benzersiz dizinlerin ve bunların birincil anahtar sütunları dahil sütunlarının listesini döndürür.