Share via


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 kosong.
ColumnSize Panjang maksimum nilai yang mungkin dalam kolom. Untuk kolom yang menggunakan jenis data dengan panjang tetap, ini adalah ukuran jenis 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 khusus untuk pengemudi.
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 mengidentifikasi 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 jika true 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 set baris yang, disatukan, secara unik mengidentifikasi baris. Kumpulan kolom dengan IsKey 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 dengan 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.

Penyedia Data .NET Framework untuk ODBC mengasumsikan bahwa informasi metadata tersedia dari driver ODBC setelah salah satu fungsi SQLPrepare, SQLExecute, atau SQLExecuteDirect 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.

Penyedia Data .NET Framework untuk ODBC juga memanggil SQLPrimaryKeys untuk mengambil informasi utama untuk setiap tabel. Jika driver ODBC yang mendasar 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, Penyedia Data .NET Framework 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 tidak memiliki informasi skema yang 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 mempengaruhi 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 primer.

Catatan

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

Berlaku untuk

Lihat juga