Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Memungkinkan Anda mengakses sumber data saat Anda tidak memiliki pengetahuan tentang skema database (struktur dasar database).
Sintaks
class CDynamicAccessor : public CAccessorBase
Persyaratan
Header: atldbcli.h
Anggota
Metode
| Nama | Deskripsi |
|---|---|
| TambahkanBindEntry | Menambahkan entri ikatan ke kolom output saat menimpa aksesor default. |
| CDynamicAccessor | Membuat instans CDynamicAccessor dan menginisialisasi objek. |
| Tutup | Membatalkan ikatan semua kolom, merilis memori yang dialokasikan, dan merilis penunjuk antarmuka IAccessor di kelas . |
| GetBlobHandling | Mengambil nilai penanganan BLOB untuk baris saat ini. |
| GetBlobSizeLimit | Mengambil ukuran BLOB maksimum dalam byte. |
| GetBookmark | Mengambil marka buku untuk baris saat ini. |
| GetColumnCount | Mengambil jumlah kolom dalam set baris. |
| GetColumnFlags | Mengambil karakteristik kolom. |
| GetColumnInfo | Mengambil metadata kolom. |
| GetColumnName | Mengambil nama kolom tertentu. |
| GetColumnType | Mengambil tipe data kolom tertentu. |
| GetLength | Mengambil panjang maksimum kolom dalam byte. |
| GetOrdinal | Mengambil indeks kolom yang diberi nama kolom. |
| GetStatus | Mengambil status kolom tertentu. |
| GetValue | Mengambil data dari buffer. |
| SetBlobHandling | Mengatur nilai penanganan BLOB untuk baris saat ini. |
| SetBlobSizeLimit | Mengatur ukuran BLOB maksimum dalam byte. |
| SetLength | Mengatur panjang kolom dalam byte. |
| SetStatus | Mengatur status kolom tertentu. |
| SetValue | Menyimpan data ke buffer. |
Keterangan
Gunakan CDynamicAccessor metode untuk mendapatkan informasi kolom seperti nama kolom, jumlah kolom, jenis data, dan sebagainya. Anda kemudian menggunakan informasi kolom ini untuk membuat aksesor secara dinamis pada waktu proses.
Informasi kolom disimpan dalam buffer yang dibuat dan dikelola oleh kelas ini. Dapatkan data dari buffer menggunakan GetValue.
Untuk diskusi dan contoh penggunaan kelas pengakses dinamis, lihat Menggunakan Aksesor Dinamis.
CDynamicAccessor::AddBindEntry
Menambahkan entri ikatan ke kolom output.
Sintaks
HRESULT AddBindEntry(const DBCOLUMNINFO& info) throw();
Parameter
info
[di] Struktur DBCOLUMNINFO yang berisi informasi kolom. Lihat "Struktur DBCOLUMNINFO" di IColumnsInfo::GetColumnInfo dalam Referensi Programmer OLE DB.
Tampilkan Nilai
Salah satu nilai HRESULT standar.
Keterangan
Gunakan metode ini saat mengganti aksesor default yang dibuat dengan CDynamicAccessor (lihat Bagaimana Cara Mengambil Data?).
CDynamicAccessor::CDynamicAccessor
Membuat instans CDynamicAccessor dan menginisialisasi objek.
Sintaks
CDynamicAccessor(DBBLOBHANDLINGENUM eBlobHandling = DBBLOBHANDLING_DEFAULT,
DBLENGTH nBlobSize = 8000);
Parameter
eBlobHandling
Menentukan bagaimana data objek besar biner (BLOB) akan ditangani. Nilai defaultnya adalah DBBLOBHANDLING_DEFAULT. Lihat SetBlobHandling untuk deskripsi nilai DBBLOBHANDLINGENUM.
nBlobSize
Ukuran BLOB maksimum dalam byte; data kolom atas nilai ini diperlakukan sebagai BLOB. Nilai defaultnya adalah 8.000. Lihat SetBlobSizeLimit untuk detailnya.
Keterangan
Jika Anda menggunakan konstruktor untuk menginisialisasi CDynamicAccessor objek, Anda dapat menentukan bagaimana objek akan mengikat BLOB. BLOB dapat berisi data biner seperti grafik, suara, atau kode yang dikompilasi. Perilaku defaultnya adalah memperlakukan kolom lebih dari 8.000 byte sebagai BLOB dan mencoba mengikatnya ke ISequentialStream objek. Namun, Anda dapat menentukan nilai yang berbeda untuk menjadi ukuran BLOB.
Anda juga dapat menentukan cara CDynamicAccessor menangani data kolom yang memenuhi syarat sebagai data BLOB: data BLOB dapat menangani data BLOB secara default; dapat melewati (tidak mengikat) data BLOB; atau dapat mengikat data BLOB dalam memori yang dialokasikan penyedia.
CDynamicAccessor::Close
Membatalkan ikatan semua kolom, merilis memori yang dialokasikan, dan merilis penunjuk antarmuka IAccessor di kelas .
Sintaks
void Close() throw();
CDynamicAccessor::GetBlobHandling
Mengambil nilai penanganan BLOB untuk baris saat ini.
Sintaks
const DBBLOBHANDLINGENUM GetBlobHandling() const;
Keterangan
Mengembalikan nilai penanganan BLOB eBlobHandling seperti yang ditetapkan oleh SetBlobHandling.
CDynamicAccessor::GetBlobSizeLimit
Mengambil ukuran BLOB maksimum dalam byte.
Sintaks
const DBLENGTH GetBlobSizeLimit() const;
Keterangan
Mengembalikan nilai penanganan BLOB nBlobSize sebagaimana ditetapkan oleh SetBlobSizeLimit.
CDynamicAccessor::GetBookmark
Mengambil marka buku untuk baris saat ini.
Sintaks
HRESULT GetBookmark(CBookmark< >* pBookmark) const throw();
Parameter
pBookmark
[out] Penunjuk ke objek CBookmark .
Tampilkan Nilai
Salah satu nilai HRESULT standar.
Keterangan
Anda perlu mengatur DBPROP_IRowsetLocate ke VARIANT_TRUE untuk mengambil bookmark.
CDynamicAccessor::GetColumnCount
Mengambil jumlah kolom.
Sintaks
DBORDINAL GetColumnCount() const throw();
Tampilkan Nilai
Jumlah kolom yang diambil.
CDynamicAccessor::GetColumnFlags
Mengambil karakteristik kolom.
Sintaks
bool GetColumnFlags(DBORDINAL nColumn,
DBCOLUMNFLAGS* pFlags) const throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
pFlags
[out] Penunjuk ke bitmask yang menjelaskan karakteristik kolom. Lihat "DBCOLUMNFLAGS Enumerated Type" di IColumnsInfo::GetColumnInfo dalam Referensi Programmer OLE DB.
Tampilkan Nilai
Mengembalikan true jika karakteristik kolom berhasil diambil. Jika tidak, ia kembali false.
Keterangan
Nomor kolom diimbangi dari satu. Kolom nol adalah kasus khusus; itu adalah marka buku jika tersedia.
CDynamicAccessor::GetColumnInfo
Mengembalikan metadata kolom yang diperlukan oleh sebagian besar konsumen.
Sintaks
HRESULT GetColumnInfo(IRowset* pRowset,
DBORDINAL* pColumns,
DBCOLUMNINFO** ppColumnInfo,
OLECHAR** ppStringsBuffer) throw();
Parameter
pRowset
[di] Penunjuk ke antarmuka IRowset .
pColumns
[out] Pointer ke memori untuk mengembalikan jumlah kolom dalam set baris; angka ini mencakup kolom marka buku, jika ada.
ppColumnInfo
[out] Pointer ke memori untuk mengembalikan array DBCOLUMNINFO struktur. Lihat "Struktur DBCOLUMNINFO" di IColumnsInfo::GetColumnInfo dalam Referensi Programmer OLE DB.
ppStringsBuffer
[out] Pointer ke memori untuk mengembalikan pointer ke penyimpanan untuk semua nilai string (nama yang digunakan baik dalam columnid atau untuk pwszName) dalam satu blok alokasi.
Tampilkan Nilai
Salah satu nilai HRESULT standar.
Keterangan
Lihat IColumnsInfo::GetColumnInfo di Referensi Programmer OLE DB untuk informasi tentang jenis DBORDINALdata , DBCOLUMNINFO, dan OLECHAR.
CDynamicAccessor::GetColumnName
Mengambil nama kolom yang ditentukan.
Sintaks
LPOLESTR GetColumnName(DBORDINAL nColumn) const throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
Tampilkan Nilai
Nama kolom yang ditentukan.
CDynamicAccessor::GetColumnType
Mengambil tipe data kolom tertentu.
Sintaks
bool GetColumnType(DBORDINAL nColumn,
DBTYPE* pType) const throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
pType
[out] Penunjuk ke jenis data kolom yang ditentukan.
Tampilkan Nilai
Mengembalikan true keberhasilan atau false kegagalan.
CDynamicAccessor::GetLength
Mengambil panjang kolom yang ditentukan.
Sintaks
bool GetLength(DBORDINAL nColumn,
DBLENGTH* pLength) const throw();
bool GetLength(const CHAR* pColumnName,
DBLENGTH* pLength) const throw();
bool GetLength(const WCHAR* pColumnName,
DBLENGTH* pLength) const throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
pColumnName
[di] Penunjuk ke string karakter yang berisi nama kolom.
pLength
[out] Penunjuk ke bilangan bulat yang berisi panjang kolom dalam byte.
Tampilkan Nilai
Mengembalikan true jika kolom yang ditentukan ditemukan. Jika tidak, fungsi ini mengembalikan false.
Keterangan
Penimpaan pertama mengambil nomor kolom, dan penimpaan kedua dan ketiga mengambil nama kolom dalam format ANSI atau Unicode.
CDynamicAccessor::GetOrdinal
Mengambil nomor kolom yang diberi nama kolom.
Sintaks
bool GetOrdinal(const CHAR* pColumnName,
DBORDINAL* pOrdinal) const throw();
bool GetOrdinal(const WCHAR* pColumnName,
DBORDINAL* pOrdinal) const throw();
Parameter
pColumnName
[di] Penunjuk ke string karakter yang berisi nama kolom.
pOrdinal
[out] Penunjuk ke nomor kolom.
Tampilkan Nilai
Mengembalikan true jika kolom dengan nama yang ditentukan ditemukan. Jika tidak, fungsi ini mengembalikan false.
CDynamicAccessor::GetStatus
Mengambil status kolom yang ditentukan.
Sintaks
bool GetStatus(DBORDINAL nColumn,
DBSTATUS* pStatus) const throw();
bool GetStatus(const CHAR* pColumnName,
DBSTATUS* pStatus) const throw();
bool GetStatus(const WCHAR* pColumnName,
DBSTATUS* pStatus) const throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
pColumnName
[di] Penunjuk ke string karakter yang berisi nama kolom.
pStatus
[out] Penunjuk ke variabel yang berisi status kolom. Lihat DBSTATUS di Referensi Programmer OLE DB untuk informasi selengkapnya.
Tampilkan Nilai
Mengembalikan true jika kolom yang ditentukan ditemukan. Jika tidak, fungsi ini mengembalikan false.
CDynamicAccessor::GetValue
Mengambil data untuk kolom tertentu.
Sintaks
void* GetValue(DBORDINAL nColumn) const throw();
void* GetValue(const CHAR* pColumnName) const throw();
void* GetValue(const WCHAR* pColumnName) const throw();
template < class ctype >
bool GetValue(DBORDINAL nColumn, ctype* pData) const throw();
template < class ctype >
bool GetValue(const CHAR* pColumnName, ctype* pData) const throw();
template < class ctype >
bool GetValue(const WCHAR* pColumnName, ctype* pData) const throw();
Parameter
ctype
[di] Parameter templat yang menangani jenis data apa pun kecuali jenis string (CHAR*, WCHAR*), yang memerlukan penanganan khusus. GetValue menggunakan jenis data yang sesuai berdasarkan apa yang Anda tentukan di sini.
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
pColumnName
[di] Nama kolom.
pData
[out] Penunjuk ke konten kolom yang ditentukan.
Tampilkan Nilai
Jika Anda ingin meneruskan data string, gunakan versi nontemplated dari GetValue. Versi yang tidak diintemplasi dari metode ini mengembalikan void*, yang menunjuk ke bagian buffer yang berisi data kolom yang ditentukan. Mengembalikan NULL jika kolom tidak ditemukan.
Untuk semua jenis data lainnya, lebih mudah untuk menggunakan versi templat .GetValue Versi templat kembali true pada keberhasilan atau false kegagalan.
Keterangan
Gunakan versi yang tidak diintemplasi untuk mengembalikan kolom yang berisi string dan versi templat untuk kolom yang berisi jenis data lainnya.
Dalam mode debug, Anda akan mendapatkan pernyataan jika ukuran pData tidak sama dengan ukuran kolom yang ditunjukkannya.
CDynamicAccessor::SetBlobHandling
Mengatur nilai penanganan BLOB untuk baris saat ini.
Sintaks
bool SetBlobHandling(DBBLOBHANDLINGENUM eBlobHandling);
Parameter
eBlobHandling
Menentukan bagaimana data BLOB akan ditangani. Ini bisa mengambil nilai berikut:
DBBLOBHANDLING_DEFAULT: Menangani data kolom yang lebih besar dari nBlobSize (sebagaimana diatur oleh
SetBlobSizeLimit) sebagai data BLOB dan mengambilnya melalui objekISequentialStreamatauIStream. Opsi ini akan mencoba mengikat setiap kolom yang berisi data yang lebih besar dari nBlobSize atau terdaftar sebagai DBTYPE_IUNKNOWN sebagai data BLOB.DBBLOBHANDLING_NOSTREAMS: Menangani data kolom yang lebih besar dari nBlobSize (sebagaimana diatur oleh
SetBlobSizeLimit) sebagai data BLOB dan mengambilnya melalui referensi dalam memori milik konsumen yang dialokasikan penyedia. Opsi ini berguna untuk tabel yang memiliki lebih dari satu kolom BLOB, dan penyedia hanya mendukung satuISequentialStreamobjek per aksesor.DBBLOBHANDLING_SKIP: Lewati (jangan ikat) kolom yang memenuhi syarat karena berisi BLOB (aksesor tidak akan mengikat atau mengambil nilai kolom tetapi masih akan mengambil status dan panjang kolom).
Keterangan
Anda harus menelepon SetBlobHandling sebelum memanggil Open.
Metode konstruktor CDynamicAccessor mengatur nilai penanganan BLOB ke DBBLOBHANDLING_DEFAULT.
CDynamicAccessor::SetBlobSizeLimit
Mengatur ukuran BLOB maksimum dalam byte.
Sintaks
void SetBlobSizeLimit(DBLENGTH nBlobSize);
Parameter
nBlobSize
Menentukan batas ukuran BLOB.
Keterangan
Mengatur ukuran BLOB maksimum dalam byte; data kolom yang lebih besar dari nilai ini diperlakukan sebagai BLOB. Beberapa penyedia memberikan ukuran yang sangat besar untuk kolom (seperti 2 GB). Daripada mencoba mengalokasikan memori untuk kolom ukuran ini, Anda biasanya akan mencoba mengikat kolom ini sebagai BLOB. Dengan cara itu Anda tidak perlu mengalokasikan semua memori, tetapi Anda masih dapat membaca semua data tanpa takut pemotongan. Namun, ada beberapa kasus di mana Anda mungkin ingin memaksa CDynamicAccessor untuk mengikat kolom besar dalam jenis data aslinya. Untuk melakukan ini, panggil SetBlobSizeLimit sebelum memanggil Open.
Metode konstruktor CDynamicAccessor mengatur ukuran BLOB maksimum ke nilai default 8.000 byte.
CDynamicAccessor::SetLength
Mengatur panjang kolom yang ditentukan.
Sintaks
bool SetLength(DBORDINAL nColumn,
DBLENGTH nLength)throw();
bool SetLength(const CHAR* pColumnName,
DBLENGTH nLength) throw();
bool SetLength(const WCHAR* pColumnName,
DBLENGTH nLength) throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
nLength
[di] Panjang kolom dalam byte.
pColumnName
[di] Penunjuk ke string karakter yang berisi nama kolom.
Tampilkan Nilai
Mengembalikan true jika panjang kolom yang ditentukan berhasil diatur. Jika tidak, fungsi ini mengembalikan false.
CDynamicAccessor::SetStatus
Mengatur status kolom yang ditentukan.
Sintaks
bool SetStatus(DBORDINAL nColumn,
DBSTATUS status)throw();
bool SetStatus(const CHAR* pColumnName,
DBSTATUS status) throw();
bool SetStatus(const WCHAR* pColumnName,
DBSTATUS status) throw();
Parameter
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
status
[di] Status kolom. Lihat DBSTATUS di Referensi Programmer OLE DB untuk informasi selengkapnya.
pColumnName
[di] Penunjuk ke string karakter yang berisi nama kolom.
Tampilkan Nilai
Mengembalikan true jika status kolom yang ditentukan berhasil diatur. Jika tidak, fungsi ini mengembalikan false.
CDynamicAccessor::SetValue
Menyimpan data ke kolom tertentu.
Sintaks
template <class ctype>
bool SetValue(
DBORDINAL nColumn,
constctype& data) throw( );
template <class ctype>
bool SetValue(
const CHAR * pColumnName,
const ctype& data) throw( );
template <class ctype>
bool SetValue(
const WCHAR *pColumnName,
const ctype& data) throw( );
Parameter
ctype
[di] Parameter templat yang menangani jenis data apa pun kecuali jenis string (CHAR*, WCHAR*), yang memerlukan penanganan khusus. GetValue menggunakan jenis data yang sesuai berdasarkan apa yang Anda tentukan di sini.
pColumnName
[di] Penunjuk ke string karakter yang berisi nama kolom.
data
[di] Penunjuk ke memori yang berisi data.
nColumn
[di] Nomor kolom. Nomor kolom dimulai dengan 1. Nilai 0 mengacu pada kolom bookmark, jika ada.
Tampilkan Nilai
Jika Anda ingin mengatur data string, gunakan versi yang tidak diintemplasi dari GetValue. Versi yang tidak diintemplasi dari metode ini mengembalikan void*, yang menunjuk ke bagian buffer yang berisi data kolom yang ditentukan. Mengembalikan NULL jika kolom tidak ditemukan.
Untuk semua jenis data lainnya, lebih mudah untuk menggunakan versi templat .GetValue Versi templat kembali true pada keberhasilan atau false kegagalan.
Lihat juga
Templat Konsumen OLE DB
Referensi Templat Konsumen OLE DB
Kelas CAccessor
Kelas CDynamicParameterAccessor
Kelas CManualAccessor