Bagikan melalui


Mendapatkan Metadata dengan Set Baris Skema

Terkadang Anda perlu mendapatkan informasi tentang penyedia, set baris, tabel, kolom, atau informasi database lainnya tanpa membuka set baris. Data tentang struktur database disebut metadata dan dapat diambil oleh sejumlah metode yang berbeda. Salah satu metodenya adalah menggunakan kumpulan baris skema.

Templat OLE DB menyediakan serangkaian kelas untuk mengambil informasi skema; kelas-kelas ini membuat kumpulan baris skema yang telah ditentukan sebelumnya dan tercantum dalam Kelas Set Baris Skema dan Kelas Typedef.

Catatan

Jika Anda menggunakan OLAP dan beberapa set baris Anda tidak didukung oleh kelas set baris skema (misalnya, Anda memiliki jumlah kolom variabel), Anda harus mempertimbangkan untuk menggunakan CManualAccessor atau CDynamicAccessor. Anda dapat menggulir kolom dan menggunakan pernyataan kasus untuk menangani jenis data yang mungkin untuk setiap kolom.

Model Katalog/Skema

ANSI SQL mendefinisikan model katalog/skema untuk penyimpanan data; OLE DB menggunakan model ini. Dalam model ini, katalog (database) memiliki skema dan skema memiliki tabel.

  • Katalog Katalog Adalah nama lain untuk database. Ini adalah kumpulan skema terkait. Untuk mencantumkan katalog (database) milik sumber data tertentu, gunakan CCatalog. Karena banyak database hanya memiliki satu katalog, metadata terkadang disebut informasi skema.

  • Skema Skema adalah kumpulan objek database yang dimiliki atau telah dibuat oleh pengguna tertentu. Untuk mencantumkan skema yang dimiliki oleh pengguna tertentu, gunakan CSchemata.

    Dalam istilah Microsoft SQL Server dan ODBC 2.x, skema adalah pemilik (misalnya, dbo adalah nama skema biasa). Selain itu, SQL Server menyimpan metadata dalam sekumpulan tabel: satu tabel berisi daftar semua tabel dan tabel lain berisi daftar semua kolom. Tidak ada yang setara dengan skema dalam database Microsoft Access.

  • Tabel Tabel adalah kumpulan kolom yang disusun dalam urutan tertentu. Untuk mencantumkan tabel yang ditentukan dalam katalog tertentu (database) dan informasi tentang tabel tersebut, gunakan CTables).

Batasan

Saat Anda mengkueri informasi skema, Anda bisa menggunakan batasan untuk menentukan jenis informasi yang Anda minati. Anda dapat menganggap pembatasan sebagai filter atau kualifikasi dalam kueri. Misalnya, dalam kueri:

SELECT * FROM authors WHERE l_name = 'pivo'

l_name adalah batasan. Ini adalah contoh sederhana dengan hanya satu batasan; kelas set baris skema mendukung beberapa batasan.

Kelas typedef kumpulan baris skema merangkum semua kumpulan baris skema OLE DB sehingga Anda dapat mengakses set baris skema seperti set baris lainnya dengan membuat instans dan membukanya. Misalnya, kelas typedef CColumns didefinisikan sebagai:

CRestrictions<CAccessor<CColumnsInfo>

Kelas CRestrictions menyediakan dukungan pembatasan. Setelah Anda membuat instans set baris skema, panggil CRestrictions::Open. Metode ini mengembalikan tataan hasil berdasarkan pembatasan yang Anda tentukan.

Untuk menentukan pembatasan, lihat Lampiran B: Kumpulan Baris Skema dan cari kumpulan baris yang Anda gunakan. Misalnya, CColumns sesuai dengan Kumpulan Baris KOLOM; topik tersebut mencantumkan kolom pembatasan di set baris COLUMNS: TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME. Anda harus mengikuti urutan tersebut dalam menentukan batasan Anda.

Jadi, misalnya, jika Anda ingin membatasi menurut nama tabel, TABLE_NAME adalah kolom pembatasan ketiga, lalu memanggil Open, menentukan nama tabel yang diinginkan sebagai parameter pembatasan ketiga, seperti yang ditunjukkan dalam contoh berikut.

Untuk menggunakan kumpulan baris skema

  1. Sertakan file Atldbsch.h header (Anda juga perlu Atldbcli.h dukungan konsumen).

  2. Buat instans objek kumpulan baris skema di file header konsumen atau dokumen. Jika Anda menginginkan informasi tabel, deklarasikan CTables objek; jika Anda menginginkan informasi kolom, deklarasikan CColumns objek. Contoh ini memperlihatkan cara mengambil kolom dalam tabel penulis:

    CDataSource ds;
    ds.Open();
    CSession ss;
    ss.Open(ds);
    CColumns columnSchemaRowset;
    // TABLE_NAME is the third restriction column, so
    // specify "authors" as the third restriction parameter:
    HRESULT hr = columnSchemaRowset.Open(ss, NULL, NULL, L"authors");
    hr = columnSchemaRowset.MoveFirst();
    while (hr == S_OK)
    {
       hr = columnSchemaRowset.MoveNext();
    }
    
  3. Untuk mengambil informasi, akses anggota data yang sesuai dari objek set baris skema, misalnya, ColumnSchemaRowset.m_szColumnName. Anggota data ini sesuai dengan COLUMN_NAME. Untuk melihat kolom OLE DB mana yang sesuai dengan setiap anggota data, lihat CColumns.

Untuk referensi kumpulan baris skema, kelas typedef yang disediakan dalam Templat OLE DB (lihat Kelas Set Baris Skema dan Kelas Typedef).

Untuk informasi selengkapnya tentang kumpulan baris skema OLE DB, termasuk kolom pembatasan, lihat Lampiran B: Set Baris Skema di Referensi Programmer OLE DB.

Untuk contoh yang lebih kompleks tentang cara menggunakan kelas set baris skema, lihat sampel CatDB dan DBViewer .

Untuk informasi tentang dukungan penyedia untuk kumpulan baris skema, lihat Kumpulan Baris Skema Pendukung.

Baca juga

Menggunakan Accessors