Aracılığıyla paylaş


CDynamicAccessor Sınıfı

Veritabanı şeması (veritabanının temel yapısı) hakkında bilginiz olmadığında bir veri kaynağına erişmenizi sağlar.

Sözdizimi

class CDynamicAccessor : public CAccessorBase

Gereksinimler

Üst bilgi: atldbcli.h

Üyeler

Yöntemler

Veri Akışı Adı Açıklama
AddBindEntry Varsayılan erişimciyi geçersiz kılarken çıkış sütunlarına bir bağlama girişi ekler.
CDynamicAccessor Nesnesinin örneğini CDynamicAccessor oluşturur ve başlatır.
Kapat Tüm sütunların bağlamasını açar, ayrılan belleği serbest bırakır ve IAccessor arabirim işaretçisini sınıfında serbest bırakır.
GetBlobHandling Geçerli satır için BLOB işleme değerini alır.
GetBlobSizeLimit Bayt cinsinden en büyük BLOB boyutunu alır.
GetBookmark Geçerli satır için yer işaretini alır.
GetColumnCount Satır kümesindeki sütun sayısını alır.
GetColumnFlags Sütun özelliklerini alır.
GetColumnInfo Sütun meta verilerini alır.
GetColumnName Belirtilen sütunun adını alır.
GetColumnType Belirtilen sütunun veri türünü alır.
GetLength Bir sütunun olası uzunluk üst sınırını bayt cinsinden alır.
GetOrdinal Bir sütun adı verilen sütun dizinini alır.
GetStatus Belirtilen sütunun durumunu alır.
GetValue Arabellekten verileri alır.
SetBlobHandling Geçerli satır için BLOB işleme değerini ayarlar.
SetBlobSizeLimit Bayt cinsinden en büyük BLOB boyutunu ayarlar.
SetLength Sütunun uzunluğunu bayt cinsinden ayarlar.
SetStatus Belirtilen sütunun durumunu ayarlar.
SetValue Verileri arabelleğe depolar.

Açıklamalar

Sütun adları, sütun sayısı, veri türü vb. gibi sütun bilgilerini almak için yöntemleri kullanın CDynamicAccessor . Ardından çalışma zamanında dinamik olarak bir erişimci oluşturmak için bu sütun bilgilerini kullanırsınız.

Sütun bilgileri, bu sınıf tarafından oluşturulan ve yönetilen bir arabellekte depolanır. GetValue kullanarak arabellekten veri alın.

Dinamik erişimci sınıflarını kullanma hakkında bir tartışma ve örnekler için bkz . Dinamik Erişimcileri Kullanma.

CDynamicAccessor::AddBindEntry

Çıkış sütunlarına bir bağlama girdisi ekler.

Sözdizimi

HRESULT AddBindEntry(const DBCOLUMNINFO& info) throw();

Parametreler

Bilgi
[in] DBCOLUMNINFO Sütun bilgilerini içeren bir yapı. OLE DB Programcı Başvurusu'ndaki IColumnsInfo::GetColumnInfo içindeki "DBCOLUMNINFO Yapıları" bölümüne bakın.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

ile CDynamicAccessor oluşturulan varsayılan erişimciyi geçersiz kılırken bu yöntemi kullanın (bkz . Verileri Nasıl Getiririm?).

CDynamicAccessor::CDynamicAccessor

Nesnesinin örneğini CDynamicAccessor oluşturur ve başlatır.

Sözdizimi

CDynamicAccessor(DBBLOBHANDLINGENUM eBlobHandling = DBBLOBHANDLING_DEFAULT,
   DBLENGTH nBlobSize = 8000);

Parametreler

eBlobHandling
İkili büyük nesne (BLOB) verilerinin nasıl işleneceğini belirtir. Varsayılan değer DBBLOBHANDLING_DEFAULT. DBBLOBHANDLINGENUM değerlerinin açıklaması için bkz . SetBlobHandling .

nBlobSize
Bayt cinsinden en büyük BLOB boyutu; bu değer üzerindeki sütun verileri BLOB olarak değerlendirilir. Varsayılan değer 8.000'dir. Ayrıntılar için bkz . SetBlobSizeLimit .

Açıklamalar

Nesnesini başlatmak CDynamicAccessor için oluşturucuyu kullanırsanız, BLOB'ların nasıl bağlanacağını belirtebilirsiniz. BLOB'lar grafik, ses veya derlenmiş kod gibi ikili veriler içerebilir. Varsayılan davranış, 8.000 bayttan fazla sütunu BLOB olarak ele almak ve bunları bir ISequentialStream nesneye bağlamayı denemektir. Ancak, BLOB boyutu olarak farklı bir değer belirtebilirsiniz.

Blob verileri olarak nitelenen sütun verilerinin nasıl CDynamicAccessor işleneceğini de belirtebilirsiniz: BLOB verilerini varsayılan şekilde işleyebilir; BLOB verilerini atlayabilir (bağlamaz) veya sağlayıcı tarafından ayrılan belleğe BLOB verilerini bağlayabilir.

CDynamicAccessor::Close

Tüm sütunların bağlamasını açar, ayrılan belleği serbest bırakır ve IAccessor arabirim işaretçisini sınıfında serbest bırakır.

Sözdizimi

void Close() throw();

CDynamicAccessor::GetBlobHandling

Geçerli satır için BLOB işleme değerini alır.

Sözdizimi

const DBBLOBHANDLINGENUM GetBlobHandling() const;

Açıklamalar

SetBlobHandling tarafından ayarlanan eBlobHandling BLOB işleme değerini döndürür.

CDynamicAccessor::GetBlobSizeLimit

Bayt cinsinden en büyük BLOB boyutunu alır.

Sözdizimi

const DBLENGTH GetBlobSizeLimit() const;

Açıklamalar

SetBlobSizeLimit tarafından ayarlanan nBlobSize BLOB işleme değerini döndürür.

CDynamicAccessor::GetBookmark

Geçerli satır için yer işaretini alır.

Sözdizimi

HRESULT GetBookmark(CBookmark< >* pBookmark) const throw();

Parametreler

pBookmark
[out] CBookmark nesnesinin işaretçisi.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

Yer işareti almak için VARIANT_TRUE olarak ayarlamanız DBPROP_IRowsetLocate gerekir.

CDynamicAccessor::GetColumnCount

Sütun sayısını alır.

Sözdizimi

DBORDINAL GetColumnCount() const throw();

Dönüş Değeri

Alınan sütun sayısı.

CDynamicAccessor::GetColumnFlags

Sütun özelliklerini alır.

Sözdizimi

bool GetColumnFlags(DBORDINAL nColumn,
   DBCOLUMNFLAGS* pFlags) const throw();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

pFlags
[out] Sütun özelliklerini açıklayan bit maskesi işaretçisi. OLE DB Programcı Başvurusu'ndaki IColumnsInfo::GetColumnInfo içindeki "DBCOLUMNFLAGS Numaralandırılmış Türü" bölümüne bakın.

Dönüş Değeri

Sütun özellikleri başarıyla alınırsa döndürür true . Aksi takdirde döndürür false.

Açıklamalar

Sütun numarası bir sütundan uzaktır. Sıfır sütunu özel bir durumdur; varsa yer işaretidir.

CDynamicAccessor::GetColumnInfo

Çoğu tüketicinin ihtiyaç duyduğu sütun meta verilerini döndürür.

Sözdizimi

HRESULT GetColumnInfo(IRowset* pRowset,
   DBORDINAL* pColumns,
   DBCOLUMNINFO** ppColumnInfo,
   OLECHAR** ppStringsBuffer) throw();

Parametreler

pRowset
[in] IRowset arabirimine bir işaretçi.

pColumns
[out] Satır kümesindeki sütun sayısını döndürmek için bellek işaretçisi; varsa, bu sayı yer işareti sütununu içerir.

ppColumnInfo
[out] Bir yapı dizisinin DBCOLUMNINFO döndürüleceği belleğe yönelik bir işaretçi. OLE DB Programcı Başvurusu'ndaki IColumnsInfo::GetColumnInfo içindeki "DBCOLUMNINFO Yapıları" bölümüne bakın.

ppStringsBuffer
[out] Tek bir ayırma bloğu içinde tüm dize değerleri (columnid içinde veya pwszName için kullanılan adlar) için depolamaya işaretçi döndürülecek belleğe yönelik bir işaretçi.

Dönüş Değeri

Standart HRESULT değerlerinden biri.

Açıklamalar

, ve veri türleri DBORDINALhakkında bilgi için OLE DB Programcı Başvurusu'nda IColumnsInfo::GetColumnInfo bölümüne bakın.OLECHARDBCOLUMNINFO

CDynamicAccessor::GetColumnName

Belirtilen sütunun adını alır.

Sözdizimi

LPOLESTR GetColumnName(DBORDINAL nColumn) const throw();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

Dönüş Değeri

Belirtilen sütunun adı.

CDynamicAccessor::GetColumnType

Belirtilen sütunun veri türünü alır.

Sözdizimi

bool GetColumnType(DBORDINAL nColumn,
   DBTYPE* pType) const throw();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

pType
[out] Belirtilen sütunun veri türüne ilişkin bir işaretçi.

Dönüş Değeri

Başarılı veya false başarısız olduğunda döndürürtrue.

CDynamicAccessor::GetLength

Belirtilen sütunun uzunluğunu alır.

Sözdizimi

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();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

pColumnName
[in] Sütun adını içeren bir karakter dizesinin işaretçisi.

pLength
[out] Sütunun bayt cinsinden uzunluğunu içeren tamsayı işaretçisi.

Dönüş Değeri

Belirtilen sütun bulunursa döndürür true . Aksi takdirde, bu işlev döndürür false.

Açıklamalar

İlk geçersiz kılma sütun numarasını alır ve ikinci ve üçüncü geçersiz kılmalar sırasıyla ANSI veya Unicode biçiminde sütun adını alır.

CDynamicAccessor::GetOrdinal

Bir sütun adı verilen sütun numarasını alır.

Sözdizimi

bool GetOrdinal(const CHAR* pColumnName,
   DBORDINAL* pOrdinal) const throw();

bool GetOrdinal(const WCHAR* pColumnName,
   DBORDINAL* pOrdinal) const throw();

Parametreler

pColumnName
[in] Sütun adını içeren bir karakter dizesinin işaretçisi.

pOrdinal
[out] Sütun numarasının işaretçisi.

Dönüş Değeri

Belirtilen ada sahip bir sütun bulunursa döndürür true . Aksi takdirde, bu işlev döndürür false.

CDynamicAccessor::GetStatus

Belirtilen sütunun durumunu alır.

Sözdizimi

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();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

pColumnName
[in] Sütun adını içeren bir karakter dizesinin işaretçisi.

pStatus
[out] Sütun durumunu içeren değişkenin işaretçisi. Daha fazla bilgi için OLE DB Programcı Başvurusu'nda DBSTATUS bölümüne bakın.

Dönüş Değeri

Belirtilen sütun bulunursa döndürür true . Aksi takdirde, bu işlev döndürür false.

CDynamicAccessor::GetValue

Belirtilen sütunun verilerini alır.

Sözdizimi

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();

Parametreler

ctype
[in] Özel işleme gerektiren dize türleri (CHAR*, WCHAR*) dışında herhangi bir veri türünü işleyen şablonlu parametre. GetValue burada belirttiğiniz değere göre uygun veri türünü kullanır.

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

pColumnName
[in] Sütun adı.

pData
[out] Belirtilen sütunun içeriğinin işaretçisi.

Dönüş Değeri

Dize verilerini geçirmek istiyorsanız, uygulamasının ortak olmayan sürümlerini GetValuekullanın. Bu yöntemin ortak olmayan sürümleri, belirtilen sütun verilerini içeren arabelleğin bölümüne işaret eden değerini döndürür void*. Sütun bulunamazsa NULL döndürür.

Diğer tüm veri türleri için şablonlu sürümlerini GetValuekullanmak daha kolaydır. Şablonlu sürümler başarılı veya false başarısız olduğunda döndürüldütrue.

Açıklamalar

Dizeler içeren sütunları ve diğer veri türlerini içeren sütunlar için şablonlu sürümleri döndürmek için ortak olmayan sürümleri kullanın.

Hata ayıklama modunda, pData boyutu işaret ettiği sütunun boyutuna eşit değilse bir onay alırsınız.

CDynamicAccessor::SetBlobHandling

Geçerli satır için BLOB işleme değerini ayarlar.

Sözdizimi

bool SetBlobHandling(DBBLOBHANDLINGENUM eBlobHandling);

Parametreler

eBlobHandling
BLOB verilerinin nasıl işleneceğini belirtir. Aşağıdaki değerleri alabilir:

  • DBBLOBHANDLING_DEFAULT: nBlobSize değerinden büyük sütun verilerini (tarafından SetBlobSizeLimitayarlandığı gibi) BLOB verileri olarak işleyin ve bir ISequentialStream veya IStream nesnesi aracılığıyla alın. Bu seçenek, nBlobSize'den büyük verileri içeren veya BLOB verileri olarak DBTYPE_IUNKNOWN olarak listelenen her sütunu bağlamayı dener.

  • DBBLOBHANDLING_NOSTREAMS: nBlobSize'den büyük sütun verilerini (tarafından SetBlobSizeLimitayarlandığı gibi) BLOB verileri olarak işleyip sağlayıcı tarafından ayrılan, tüketiciye ait bellekteki başvuru aracılığıyla alın. Bu seçenek, birden fazla BLOB sütunu olan tablolar için kullanışlıdır ve sağlayıcı her erişimci için yalnızca bir ISequentialStream nesneyi destekler.

  • DBBLOBHANDLING_SKIP: İçeren BLOB'lar olarak nitelen sütunları atlayın (bağlamayın) (erişimci sütun değerini bağlamaz veya almaz, ancak yine de sütun durumunu ve uzunluğunu alır).

Açıklamalar

çağrısına başlamadan önce aramanız SetBlobHandling Opengerekir.

CDynamicAccessor oluşturucu yöntemi BLOB işleme değerini DBBLOBHANDLING_DEFAULT olarak ayarlar.

CDynamicAccessor::SetBlobSizeLimit

Bayt cinsinden en büyük BLOB boyutunu ayarlar.

Sözdizimi

void SetBlobSizeLimit(DBLENGTH nBlobSize);

Parametreler

nBlobSize
BLOB boyut sınırını belirtir.

Açıklamalar

Bayt cinsinden en büyük BLOB boyutunu ayarlar; bu değerden büyük sütun verileri BLOB olarak değerlendirilir. Bazı sağlayıcılar sütunlar için son derece büyük boyutlar (2 GB gibi) verir. Bu boyuttaki bir sütun için bellek ayırmaya çalışmak yerine genellikle bu sütunları BLOB olarak bağlamayı denersiniz. Bu şekilde tüm belleği ayırmanız gerekmez, ancak kesme korkusu olmadan da tüm verileri okuyabilirsiniz. Ancak, yerel veri türlerinde büyük sütunları bağlamaya zorlamak CDynamicAccessor isteyebileceğiniz bazı durumlar vardır. Bunu yapmak için çağırmadan önce öğesini arayın SetBlobSizeLimit Open.

CDynamicAccessor oluşturucu yöntemi, maksimum BLOB boyutunu varsayılan 8.000 bayt değerine ayarlar.

CDynamicAccessor::SetLength

Belirtilen sütunun uzunluğunu ayarlar.

Sözdizimi

bool SetLength(DBORDINAL nColumn,
   DBLENGTH nLength)throw();

bool SetLength(const CHAR* pColumnName,
   DBLENGTH nLength) throw();

bool SetLength(const WCHAR* pColumnName,
   DBLENGTH nLength) throw();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

nLength
[in] Sütunun bayt cinsinden uzunluğu.

pColumnName
[in] Sütun adını içeren bir karakter dizesinin işaretçisi.

Dönüş Değeri

Belirtilen sütun uzunluğu başarıyla ayarlanırsa döndürür true . Aksi takdirde, bu işlev döndürür false.

CDynamicAccessor::SetStatus

Belirtilen sütunun durumunu ayarlar.

Sözdizimi

bool SetStatus(DBORDINAL nColumn,
   DBSTATUS status)throw();

bool SetStatus(const CHAR* pColumnName,
   DBSTATUS status) throw();

bool SetStatus(const WCHAR* pColumnName,
   DBSTATUS status) throw();

Parametreler

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

durum
[in] Sütun durumu. Daha fazla bilgi için OLE DB Programcı Başvurusu'nda DBSTATUS bölümüne bakın.

pColumnName
[in] Sütun adını içeren bir karakter dizesinin işaretçisi.

Dönüş Değeri

Belirtilen sütun durumu başarıyla ayarlanırsa döndürür true . Aksi takdirde, bu işlev döndürür false.

CDynamicAccessor::SetValue

Verileri belirtilen bir sütuna depolar.

Sözdizimi

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( );

Parametreler

ctype
[in] Özel işleme gerektiren dize türleri (CHAR*, WCHAR*) dışında herhangi bir veri türünü işleyen şablonlu parametre. GetValue burada belirttiğiniz değere göre uygun veri türünü kullanır.

pColumnName
[in] Sütun adını içeren bir karakter dizesinin işaretçisi.

data
[in] Verileri içeren belleğe yönelik işaretçi.

nSütun
[in] Sütun numarası. Sütun numaraları 1 ile başlar. 0 değeri varsa yer işareti sütununa başvurur.

Dönüş Değeri

Dize verilerini ayarlamak istiyorsanız, uygulamasının platform dışı sürümlerini GetValuekullanın. Bu yöntemin ortak olmayan sürümleri, belirtilen sütun verilerini içeren arabelleğin bölümüne işaret eden değerini döndürür void*. Sütun bulunamazsa NULL döndürür.

Diğer tüm veri türleri için şablonlu sürümlerini GetValuekullanmak daha kolaydır. Şablonlu sürümler başarılı veya false başarısız olduğunda döndürüldütrue.

Ayrıca bkz.

OLE DB Tüketici Şablonları
OLE DB Tüketici Şablonları Başvurusu
CAccessor Sınıfı
CDynamicParameterAccessor Sınıfı
CManualAccessor Sınıfı