Share via


OdbcDataReader.GetSchemaTable Yöntem

Tanım

sütun meta verilerini OdbcDataReaderaçıklayan bir DataTable döndürür.

public:
 override System::Data::DataTable ^ GetSchemaTable();
public:
 virtual System::Data::DataTable ^ GetSchemaTable();
public override System.Data.DataTable? GetSchemaTable ();
public System.Data.DataTable GetSchemaTable ();
public override System.Data.DataTable GetSchemaTable ();
override this.GetSchemaTable : unit -> System.Data.DataTable
abstract member GetSchemaTable : unit -> System.Data.DataTable
override this.GetSchemaTable : unit -> System.Data.DataTable
Public Overrides Function GetSchemaTable () As DataTable
Public Function GetSchemaTable () As DataTable

Döndürülenler

DataTable Sütun meta verilerini açıklayan bir.

Uygulamalar

Özel durumlar

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 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ı kısmı. Bu sütun null değer içeremez.
Columnsize Sütundaki bir değerin mümkün olan en büyük 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 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 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.
DataType ortak dil çalışma zamanı türüyle eşler DbType.
Providertype Temel alınan sürücü türü.
Islong true sütunda çok uzun veri 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ı saptayamazsa. 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'de 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 olduğu 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ı. Bu, diğer ad kullanıldıysa 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 bir ODBC sürücüsünden meta veri bilgilerinin kullanılabilir olduğunu 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 tamamı 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 karşılık gelen değerler doğru ayarlanmaz.

ODBC için .NET Framework Veri Sağlayıcısı, her tablonun anahtar bilgilerini almak için SQLPrimaryKeys'i de çağırır. Temel odbc sürücüsü bu işlevi desteklemiyorsa, veri sağlayıcısı SQLStatistics'i çağırır ve tablonun birincil anahtarı olarak benzersiz dizinlerden birini seçer. Bu her zaman istediğiniz sonuçları vermeyebilir.

OdbcCommandBuilder doğru çalışması 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 yetersiz şema bilgilerine sahip olduğundan düzgün ç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ğırmanız ExecuteReader gerekir. Aksi takdirde, şema tablosundaki sütunlardan bazıları varsayılan, null veya yanlış veriler döndürebilir.

ODBC sürücüsü aracılığıyla Oracle'a ODBC.NET 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 becerisini de etkiler. Birincil anahtar sütunu için diğer ad kullanmamayı göz önünde bulundurun.

Not

Microsoft Jet ODBC sürücüsü, null 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 birincil anahtar sütunları da dahil olmak üzere sütunlarının listesini döndürür.

Şunlara uygulanır

Ayrıca bkz.