Bahasa

OdbcDataReader.GetSchemaTable Metode

Definisi

Mengembalikan yang DataTable menjelaskan metadata kolom dari OdbcDataReader.

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

Mengembalikan

DataTable Yang menjelaskan metadata kolom.

Penerapan

Pengecualian

Keterangan

Metode mengembalikan GetSchemaTable metadata tentang setiap kolom dalam urutan berikut:

Kolom DataReader Deskripsi
ColumnName Nama kolom; ini mungkin tidak unik. Jika nama kolom tidak dapat ditentukan, nilai null dikembalikan. Nama ini selalu mencerminkan penamaan kolom terbaru dalam tampilan atau teks perintah saat ini.
ColumnOrdinal Ordinal kolom berbasis nol. Kolom ini tidak boleh berisi nilai null.
Ukuran Kolom Panjang maksimum nilai yang mungkin dalam kolom. Untuk kolom yang menggunakan tipe data dengan panjang tetap, ini adalah ukuran tipe data.
NumericPrecision Jika DbType adalah jenis data numerik, ini adalah presisi maksimum kolom. Presisi tergantung pada definisi kolom. Jika DbType bukan tipe data numerik, jangan gunakan data di kolom ini. Jika driver ODBC yang mendasarinya mengembalikan nilai presisi untuk jenis data non-numerik, nilai ini digunakan dalam tabel skema.
NumericScale Jika DbType adalah Decimal, jumlah digit di sebelah kanan titik desimal. Jika tidak, ini adalah nilai null. Jika driver ODBC yang mendasarinya mengembalikan nilai presisi untuk jenis data non-numerik, nilai ini digunakan dalam tabel skema.
DataType Memetakan ke jenis runtime bahasa umum dari DbType.
ProviderType Jenis driver yang mendasar.
IsLong true jika kolom berisi Objek Panjang Biner (BLOB) yang berisi data yang sangat panjang. Definisi data yang sangat panjang adalah khusus driver.
AllowDBNull true jika konsumen dapat mengatur kolom ke nilai null atau jika driver tidak dapat menentukan apakah konsumen dapat mengatur kolom ke nilai null. Sebaliknya, false. Kolom mungkin berisi nilai null, meskipun tidak dapat diatur ke nilai null.
IsReadOnly true jika kolom tidak dapat dimodifikasi; jika tidak false.
IsRowVersion Atur jika kolom berisi pengidentifikasi baris persisten yang tidak dapat ditulis, dan tidak memiliki nilai yang bermakna kecuali untuk identitas baris.
IsUnique true: Tidak ada dua baris dalam tabel dasar (tabel yang dikembalikan di BaseTableName) dapat memiliki nilai yang sama di kolom ini. IsUnique dijamin true jika kolom mewakili kunci dengan sendirinya atau jika ada batasan jenis UNIQUE yang hanya berlaku untuk kolom ini.

false: Kolom dapat berisi nilai duplikat dalam tabel dasar. Default untuk kolom ini adalah false.
IsKey true: Kolom adalah salah satu dari sekumpulan kolom dalam himpunan baris yang, disatukan, mengidentifikasi baris secara unik. Kumpulan kolom dengan IsKey yang diatur ke true harus secara unik mengidentifikasi baris dalam set baris. Tidak ada persyaratan bahwa kumpulan kolom ini adalah sekumpulan kolom minimal. Kumpulan kolom ini dapat dihasilkan dari kunci primer tabel dasar, batasan unik, atau indeks unik.

false: Kolom tidak diperlukan untuk mengidentifikasi baris secara unik.
IsAutoIncrement true jika kolom menetapkan nilai ke baris baru dalam kenaikan tetap; jika tidak false. Default untuk kolom ini adalah false.
BaseSchemaName Nama skema di sumber data yang berisi kolom . NULL jika nama katalog dasar tidak dapat ditentukan. Default untuk kolom ini adalah nilai null.
BaseCatalogName Nama katalog di penyimpanan data yang berisi kolom . NULL jika nama katalog dasar tidak dapat ditentukan. Default untuk kolom ini adalah nilai null.
BaseTableName Nama tabel atau tampilan di penyimpanan data yang berisi kolom. Nilai null jika nama tabel dasar tidak dapat ditentukan. Default kolom ini adalah nilai null.
BaseColumnName Nama kolom di penyimpanan data. Ini mungkin berbeda dari nama kolom yang dikembalikan di kolom ColumnName jika alias digunakan. Nilai null jika nama kolom dasar tidak dapat ditentukan atau jika kolom set baris diturunkan, tetapi tidak identik dengan, kolom di penyimpanan data. Default untuk kolom ini adalah nilai null.

Baris dikembalikan untuk setiap kolom dalam kumpulan hasil.

Data Provider Kerangka Kerja .NET untuk ODBC mengasumsikan bahwa informasi metadata tersedia dari driver ODBC setelah salah satu SQLPrepare, SQLExecute, atau SQLExecuteDirect fungsi dipanggil. Agar perilaku perintah "SchemaOnly" berfungsi dengan benar, SQLPrepare harus mengembalikan informasi metadata yang diperlukan. Tidak semua driver ODBC mendukung fungsi ini atau mengembalikan informasi metadata. Dalam kasus ini, bagian atau semua informasi dalam SchemaTable akan hilang. Setelah memanggil SQLPrepare, Penyedia data memanggil fungsi ODBC SQLColAttribute untuk menemukan informasi metadata yang terkait dengan setiap kolom dalam hasil kueri (misalnya, IsLong, IsUnique, AllowDBNull, BaseTableName, BaseColumnName). Jika driver yang mendasar tidak mengembalikan beberapa informasi ini, nilai terkait dalam SchemaTable tidak akan diatur dengan benar.

.NET Framework Data Provider untuk ODBC juga memanggil SQLPrimaryKeys untuk mengambil informasi utama untuk setiap tabel. Jika driver ODBC yang mendasarinya tidak mendukung fungsi ini, penyedia data memanggil SQLStatistics dan memilih salah satu indeks unik sebagai kunci utama untuk tabel. Ini mungkin tidak selalu memberikan hasil yang Anda inginkan.

OdbcCommandBuilder membutuhkan identifikasi yang benar dari kunci primer tabel agar berfungsi dengan benar. Jika BaseTableName tidak dikembalikan untuk setiap kolom dalam hasil kueri, .NET Framework Data Provider untuk ODBC mencoba mengurai pernyataan SQL untuk menemukan nama tabel yang terlibat dalam kueri. Ini berfungsi dengan pernyataan UPDATE, INSERT, DELETE, dan SELECT sederhana, tetapi tidak dengan prosedur tersimpan atau pernyataan SELECT berdasarkan gabungan. Jika beberapa atau semua informasi skema hilang dari tabel ini, OdbcCommandBuilder tidak akan berfungsi dengan benar, karena memiliki informasi skema yang tidak cukup untuk secara otomatis menghasilkan pernyataan INSERT, UPDATE, atau DELETE yang benar.

Untuk memastikan bahwa kolom metadata mengembalikan informasi yang benar, Anda harus memanggil ExecuteReader dengan parameter perilaku yang diatur ke KeyInfo. Jika tidak, beberapa kolom dalam tabel skema dapat mengembalikan data default, null, atau salah.

Saat Anda menggunakan ODBC.NET ke Oracle melalui driver ODBC, kolom kunci alias tidak dikenali sebagai kunci. Ini memengaruhi kolom IsKey dan IsUnique dalam tabel skema OdbcDataReader. Ini juga mempengaruhi kemampuan OdbcCommandBuilder untuk menghasilkan logika pembaruan. Pertimbangkan untuk tidak menggunakan alias untuk kolom kunci utama.

Note

Driver Microsoft Jet ODBC selalu mengembalikan indeks unik dan kolom kunci primer sebagai null terlepas dari apakah mereka nullable atau tidak. Driver juga tidak mengembalikan informasi kunci utama; ini hanya mengembalikan daftar indeks unik dan kolomnya, termasuk kolom kunci utama, tanpa membedakannya.

Berlaku untuk

Lihat juga