Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not
Microsoft Foundation Sınıfları (MFC) kitaplığına destek verilmeye devam ediliyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
Veri kaynağından seçilen bir kayıt kümesini temsil eder.
Sözdizimi
class CRecordset : public CObject
Üyeler
Ortak oluşturucular
| Veri Akışı Adı | Açıklama |
|---|---|
CRecordset::CRecordset |
Bir CRecordset nesne oluşturur. Türetilmiş sınıfınız bunu çağıran bir oluşturucu sağlamalıdır. |
Genel yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
CRecordset::AddNew |
Yeni kayıt eklemeye hazırlanır. Toplamayı tamamlamak için çağrısı Update . |
CRecordset::CanAppend |
Üye işlevi aracılığıyla AddNew kayıt kümesine yeni kayıtlar eklenebiliyorsa sıfır olmayan döndürür. |
CRecordset::CanBookmark |
Kayıt kümesi yer işaretlerini destekliyorsa sıfır olmayan değerini döndürür. |
CRecordset::Cancel |
İkinci iş parçacığından zaman uyumsuz bir işlemi veya işlemi iptal eder. |
CRecordset::CancelUpdate |
Veya AddNew işlemi nedeniyle Edit bekleyen güncelleştirmeleri iptal eder. |
CRecordset::CanRestart |
Kayıt kümesinin sorgusunu yeniden çalıştırmak için çağrılabiliyorsa Requery sıfır olmayan döndürür. |
CRecordset::CanScroll |
Kayıtlarda gezinebiliyorsanız sıfır olmayan değerini döndürür. |
CRecordset::CanTransact |
Veri kaynağı işlemleri destekliyorsa sıfır olmayan değerini döndürür. |
CRecordset::CanUpdate |
Kayıt kümesi güncelleştirilebiliyorsa sıfır olmayan bir değer döndürür (kayıtları ekleyebilir, güncelleştirebilir veya silebilirsiniz). |
CRecordset::CheckRowsetError |
Kayıt getirme sırasında oluşturulan hataları işlemek için çağrılır. |
CRecordset::Close |
Kayıt kümesini ve onunla ilişkili ODBC'yi HSTMT kapatır. |
CRecordset::Delete |
Kayıt kümesinden geçerli kaydı siler. Silme işleminden sonra açıkça başka bir kayda kaydırmanız gerekir. |
CRecordset::DoBulkFieldExchange |
Veri kaynağındaki toplu veri satırlarını kayıt kümesine değiştirmek için çağrılır. Toplu kayıt alanı değişimini (Toplu RFX) uygular. |
CRecordset::DoFieldExchange |
Kayıt kümesinin alan veri üyeleriyle veri kaynağındaki ilgili kayıt arasında veri alışverişi yapmak için (her iki yönde de) çağrılır. Kayıt alanı değişimini (RFX) uygular. |
CRecordset::Edit |
Geçerli kayıtta yapılan değişiklikler için hazırlanır. Düzenlemeyi tamamlamak için arayın Update . |
CRecordset::FlushResultSet |
Önceden tanımlanmış bir sorgu kullanılırken alınması gereken başka bir sonuç kümesi varsa sıfır olmayan değerini döndürür. |
CRecordset::GetBookmark |
Parametre nesnesine bir kaydın yer işareti değerini atar. |
CRecordset::GetDefaultConnect |
Varsayılan bağlantı dizesi almak için çağrıldı. |
CRecordset::GetDefaultSQL |
Yürütülecek varsayılan SQL dizesini almak için çağrıldı. |
CRecordset::GetFieldValue |
Kayıt kümesindeki bir alanın değerini döndürür. |
CRecordset::GetODBCFieldCount |
Kayıt kümesindeki alanların sayısını döndürür. |
CRecordset::GetODBCFieldInfo |
Kayıt kümesindeki alanlar hakkında belirli türde bilgiler döndürür. |
CRecordset::GetRecordCount |
Kayıt kümesindeki kayıt sayısını döndürür. |
CRecordset::GetRowsetSize |
Tek bir getirme sırasında almak istediğiniz kayıt sayısını döndürür. |
CRecordset::GetRowsFetched |
Getirme sırasında alınan gerçek satır sayısını döndürür. |
CRecordset::GetRowStatus |
Getirme sonrasında satırın durumunu döndürür. |
CRecordset::GetSQL |
Kayıt kümesi için kayıtları seçmek için kullanılan SQL dizesini alır. |
CRecordset::GetStatus |
Kayıt kümesinin durumunu alır: geçerli kaydın dizini ve kayıtların son sayısının alınıp alınmadığı. |
CRecordset::GetTableName |
Kayıt kümesinin temel aldığı tablonun adını alır. |
CRecordset::IsBOF |
Kayıt kümesi ilk kayıt öncesinde konumlandırılmışsa sıfır olmayan değerini döndürür. Geçerli kayıt yok. |
CRecordset::IsDeleted |
Kayıt kümesi silinmiş bir kayda konumlandırıldıysa sıfır olmayan değerini döndürür. |
CRecordset::IsEOF |
Kayıt kümesi son kayıt sonrasında konumlandırıldıysa sıfır olmayan değerini döndürür. Geçerli kayıt yok. |
CRecordset::IsFieldDirty |
Geçerli kayıtta belirtilen alan değiştirildiyse sıfır olmayan değerini döndürür. |
CRecordset::IsFieldNull |
Geçerli kayıtta belirtilen alan null ise (değeri yok) sıfır olmayan bir değer döndürür. |
CRecordset::IsFieldNullable |
Geçerli kayıtta belirtilen alan null (değer olmadan) olarak ayarlanabiliyorsa sıfır olmayan değerini döndürür. |
CRecordset::IsOpen |
Daha önce çağrıldıysa Open sıfır olmayan değerini döndürür. |
CRecordset::Move |
Kayıt kümesini geçerli kayıttan herhangi bir yönde belirtilen sayıda kayda konumlandırın. |
CRecordset::MoveFirst |
Geçerli kaydı kayıt kümesindeki ilk kayda konumlandırın. önce için IsBOF test edin. |
CRecordset::MoveLast |
Geçerli kaydı son kayda veya son satır kümesine yerleştirir. önce için IsEOF test edin. |
CRecordset::MoveNext |
Geçerli kaydı bir sonraki kayda veya sonraki satır kümesine yerleştirir. önce için IsEOF test edin. |
CRecordset::MovePrev |
Geçerli kaydı önceki kayda veya önceki satır kümesine yerleştirir. önce için IsBOF test edin. |
CRecordset::OnSetOptions |
Belirtilen ODBC deyimi için seçenekleri ayarlamak için çağrılır (seçimde kullanılır). |
CRecordset::OnSetUpdateOptions |
Belirtilen ODBC deyimi için seçenekleri ayarlamak (güncelleştirmede kullanılır) için çağrılır. |
CRecordset::Open |
Tabloyu alarak veya kayıt kümesinin temsil ettiği sorguyu gerçekleştirerek kayıt kümesini açar. |
CRecordset::RefreshRowset |
Belirtilen satırların verilerini ve durumunu yeniler. |
CRecordset::Requery |
Seçilen kayıtları yenilemek için kayıt kümesinin sorgusunu yeniden çalıştırır. |
CRecordset::SetAbsolutePosition |
Kayıt kümesini belirtilen kayıt numarasına karşılık gelen kayıtta konumlandırın. |
CRecordset::SetBookmark |
Kayıt kümesini yer işareti tarafından belirtilen kayda konumlandırın. |
CRecordset::SetFieldDirty |
Geçerli kayıtta belirtilen alanı değiştirildi olarak işaretler. |
CRecordset::SetFieldNull |
Geçerli kayıtta belirtilen alanın değerini null (değer olmadan) olarak ayarlar. |
CRecordset::SetLockingMode |
Kilitleme modunu "iyimser" kilitleme (varsayılan) veya "kötümser" kilitleme olarak ayarlar. Kayıtların güncelleştirmelere karşı nasıl kilitlendiğini belirler. |
CRecordset::SetParamNull |
Belirtilen parametreyi null (değer içermeyen) olarak ayarlar. |
CRecordset::SetRowsetCursorPosition |
İmleci satır kümesi içinde belirtilen satıra yerleştirir. |
CRecordset::SetRowsetSize |
Getirme sırasında almak istediğiniz kayıt sayısını belirtir. |
CRecordset::Update |
Yeni veya AddNew düzenlenmiş verileri veri kaynağına kaydederek veya Edit işlemini tamamlar. |
Genel veri üyeleri
| Veri Akışı Adı | Açıklama |
|---|---|
CRecordset::m_hstmt |
Kayıt kümesinin ODBC deyimi tutamacını içerir.
HSTMT yazın. |
CRecordset::m_nFields |
Kayıt kümesindeki alan verisi üyelerinin sayısını içerir.
UINT yazın. |
CRecordset::m_nParams |
Kayıt kümesindeki parametre veri üyesi sayısını içerir.
UINT yazın. |
CRecordset::m_pDatabase |
Kayıt kümesinin CDatabase bir veri kaynağına bağlandığı nesneye ilişkin bir işaretçi içerir. |
CRecordset::m_strFilter |
CString Yapılandırılmış Sorgu Dili (SQL) WHERE yan tümcesini belirten bir içerir. Yalnızca belirli ölçütlere uyan kayıtları seçmek için filtre olarak kullanılır. |
CRecordset::m_strSort |
CString SQL ORDER BY yan tümcesini belirten bir içerir. Kayıtların nasıl sıralanacağını denetlemek için kullanılır. |
Açıklamalar
"Kayıt kümeleri" CRecordset olarak bilinen nesneler genellikle iki biçimde kullanılır: dinamik kümeler ve anlık görüntüler. Dinamik küme, diğer kullanıcılar tarafından yapılan veri güncelleştirmeleriyle eşitlenmiş olarak kalır. Anlık görüntü, verilerin statik bir görünümüdür. Her form, kayıt kümesi açıldığında sabit olan bir kayıt kümesini temsil eder. Dinamik kümedeki bir kayda kaydırdığınızda, diğer kullanıcılar veya uygulamanızdaki diğer kayıt kümeleri tarafından kayıtta yapılan değişiklikleri yansıtır.
Not
Açık Veritabanı Bağlantısı (ODBC) sınıfları yerine Veri Erişim Nesneleri (DAO) sınıfları ile çalışıyorsanız, bunun yerine sınıfı CDaoRecordset kullanın. Daha fazla bilgi için bkz . Genel Bakış: Veritabanı Programlama.
Her iki kayıt kümesi türüyle de çalışmak için genellikle uygulamasından CRecordsetuygulamaya özgü bir kayıt kümesi sınıfı türetirsiniz. Kayıt kümeleri bir veri kaynağından kayıtları seçer ve daha sonra şunları yapabilirsiniz:
Kayıtlar arasında ilerleyin.
Kayıtları güncelleştirin ve bir kilitleme modu belirtin.
Veri kaynağında bulunan kayıtlardan hangi kayıtları seçtiğini kısıtlamak için kayıt kümesini filtreleyin.
Kayıt kümesini sıralayın.
Çalışma zamanına kadar bilinmeyen bilgilerle seçimini özelleştirmek için kayıt kümesini parametreleştirin.
Sınıfınızı kullanmak için bir veritabanı açın ve bir kayıt kümesi nesnesi oluşturarak oluşturucuyu nesnenize CDatabase bir işaretçi geçirin. Ardından, nesnenin dinamik küme mi yoksa anlık görüntü mü olduğunu belirtebileceğiniz kayıt kümesinin Open üye işlevini çağırın. Çağrı Open , veri kaynağındaki verileri seçer. Kayıt kümesi nesnesi açıldıktan sonra, kayıtlarda gezinmek ve bunlar üzerinde çalışmak için üye işlevlerini ve veri üyelerini kullanın. Kullanılabilir işlemler nesnenin dinamik küme mi yoksa anlık görüntü mü olduğuna, güncelleştirilebilir mi yoksa salt okunur mu olduğuna (bu, Açık Veritabanı Bağlantısı (ODBC) veri kaynağının özelliğine ve toplu satır getirme işlemi gerçekleştirip uygulamadığınıza bağlıdır. Çağrıdan sonra değiştirilmiş veya eklenmiş olabilecek kayıtları yenilemek Open için nesnenin üye işlevini çağırın Requery . Nesnenin üye işlevini çağırın Close ve bitirdiğinizde nesneyi yok edin.
Türetilmiş CRecordset bir sınıfta, kayıt alanlarının okunmasını ve güncelleştirilmesini desteklemek için kayıt alanı değişimi (RFX) veya toplu kayıt alanı değişimi (Toplu RFX) kullanılır.
Kayıt kümeleri ve kayıt alanı değişimi hakkında daha fazla bilgi için Genel Bakış: Veritabanı Programlama, Kayıt Kümesi (ODBC), Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC) ve Kayıt Alanı Değişimi (RFX) makalelerine bakın. Dinamik kümelere ve anlık görüntülere odaklanmak için Dynaset ve Snapshot makalelerine bakın.
Devralma hiyerarşisi
CRecordset
Gereksinimler
Üstbilgi:afxdb.h
CRecordset::AddNew
Tabloya yeni kayıt eklemeye hazırlanır.
virtual void AddNew();
Açıklamalar
Yeni eklenen kaydı görmek için üye işlevini çağırmanız Requery gerekir. Kaydın alanları başlangıçta Null olur. (Veritabanı terminolojisinde Null değerin olmadığı anlamına gelir ve C++'da NULL ile aynı değildir.) İşlemi tamamlamak için üye işlevini çağırmanız Update gerekir.
Update değişikliklerinizi veri kaynağına kaydeder.
Not
Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız AddNew. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
AddNew kayıt kümesinin alan veri üyelerini kullanarak yeni, boş bir kayıt hazırlar. çağrısı AddNewyaptıktan sonra, kayıt kümesinin alan veri üyelerinde istediğiniz değerleri ayarlayın. (Şunu aramanız gerekmez: Bu amaçla üye işlevini düzenleyin ; yalnızca mevcut kayıtlar için kullanın Edit .) çağrısı Updateyaptığınızda, alan veri üyelerindeki değiştirilen değerler veri kaynağına kaydedilir.
Dikkat
çağrısından Updateönce yeni bir kayda kaydırdığınızda yeni kayıt kaybolur ve hiçbir uyarı verilmez.
Veri kaynağı işlemleri destekliyorsa, aramanızı AddNew bir işlemin parçası yapabilirsiniz. İşlemler hakkında daha fazla bilgi için bkz. sınıfı CDatabase. çağrısına başlamadan önce arayın CDatabase::BeginTransAddNew.
Not
Dinamik kümeler için kayıt kümesine son kayıt olarak yeni kayıtlar eklenir. Eklenen kayıtlar anlık görüntülere eklenmez; kayıt kümesini yenilemek için aramanız Requery gerekir.
Üye işlevi çağrılmamış bir kayıt kümesini AddNew çağırmak Open geçersizdir.
CDBException eklenemiyor bir kayıt kümesi için çağırırsanız AddNew oluşturulur. çağırarak CanAppendkayıt kümesinin güncelleştirilebilir olup olmadığını belirleyebilirsiniz.
Daha fazla bilgi için şu makalelere bakın: Kayıt Kümesi: Kayıt Kümeleri Kayıtları Nasıl Güncelleştirir (ODBC), Kayıt Kümesi: Kayıtları Ekleme, Güncelleştirme ve Silme (ODBC) ve İşlem (ODBC).
Örnek
bkz . İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC).
CRecordset::CanAppend
Daha önce açılan kayıt kümesinin yeni kayıtlar eklemenize izin verip vermediğini belirler.
BOOL CanAppend() const;
Dönüş değeri
Kayıt kümesi yeni kayıtlar eklemeye izin veriyorsa sıfır olmayan; aksi takdirde 0.
CanAppend kayıt kümesini salt okunur olarak açtıysanız 0 döndürür.
CRecordset::CanBookmark
Kayıt kümesinin yer işaretlerini kullanarak kayıtları işaretlemenize izin verip vermediğini belirler.
BOOL CanBookmark() const;
Dönüş değeri
Kayıt kümesi yer işaretlerini destekliyorsa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bu işlev, üye işlevinin CRecordset::useBookmarks parametresindeki dwOptions seçeneğinden Open bağımsızdır.
CanBookmark verilen ODBC sürücüsünün ve imleç türünün yer işaretlerini destekleyip desteklemediğini gösterir.
CRecordset::useBookmarks , desteklenmeleri koşuluyla yer işaretlerinin kullanılabilir olup olmayacağını gösterir.
Not
Yer işaretleri yalnızca ileriye doğru kayıt kümelerinde desteklenmez.
Yer işaretleri ve kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) ve Kayıt Kümesi: Kaydırma (ODBC) makalelerine bakın.
CRecordset::Cancel
Veri kaynağının devam eden zaman uyumsuz bir işlemi veya ikinci iş parçacığından bir işlemi iptal etmelerini ister.
void Cancel();
Açıklamalar
MFC ODBC sınıfları artık zaman uyumsuz işleme kullanmıyor; zaman uyumsuz bir işlem gerçekleştirmek için ODBC API işlevini SQLSetConnectOptiondoğrudan çağırmanız gerekir. Daha fazla bilgi için ODBC SDK Programcı Kılavuzu'ndaki "İşlevleri Zaman Uyumsuz Olarak Yürütme" bölümüne bakın.
CRecordset::CancelUpdate
Çağrılmadan önce Edit veya AddNew işleminden Update kaynaklanan bekleyen güncelleştirmeleri iptal eder.
void CancelUpdate();
Açıklamalar
Not
Bu üye işlevi toplu satır getirme kullanan kayıt kümelerinde geçerli değildir, çünkü bu tür kayıt kümeleri , Editveya AddNewçağıramazUpdate. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Otomatik kirli alan denetimi etkinleştirilirse, CancelUpdate üye değişkenleri daha önce Edit sahip oldukları veya AddNew çağrıldıkları değerlere geri yükler; aksi takdirde, tüm değer değişiklikleri kalır. Kayıt kümesi açıldığında, varsayılan olarak otomatik alan denetimi etkinleştirilir. Devre dışı bırakmak için, OpenCRecordset::noDirtyFieldCheckdwOptions parametresinde öğesini belirtmeniz gerekir.
Verileri güncelleştirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Ekleme, Güncelleştirme ve Silme (ODBC).
CRecordset::CanRestart
Kayıt kümesinin üye işlevini çağırarak Requery sorgunun yeniden başlatılmasına (kayıtlarını yenilemek için) izin verip vermediğini belirler.
BOOL CanRestart() const;
Dönüş değeri
Yeniden sorgulamaya izin veriliyorsa sıfır olmayan; aksi takdirde 0.
CRecordset::CanScroll
Kayıt kümesinin kaydırmaya izin verip vermeyeceğini belirler.
BOOL CanScroll() const;
Dönüş değeri
Kayıt kümesi kaydırmaya izin veriyorsa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Kaydırma hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kaydırma (ODBC).
CRecordset::CanTransact
Kayıt kümesinin işlemlere izin verip vermeyeceğini belirler.
BOOL CanTransact() const;
Dönüş değeri
Kayıt kümesi işlemlere izin veriyorsa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Daha fazla bilgi için bkz . İşlem (ODBC).
CRecordset::CanUpdate
Kayıt kümesinin güncelleştirilip güncelleştirilemeyeceğini belirler.
BOOL CanUpdate() const;
Dönüş değeri
Kayıt kümesi güncelleştirilebiliyorsa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Temel alınan veri kaynağı salt okunursa veya kayıt kümesini açtığınızda parametresinde CRecordset::readOnly belirttiyseniz dwOptions kayıt kümesi salt okunur olabilir.
CRecordset::CheckRowsetError
Kayıt getirme sırasında oluşturulan hataları işlemek için çağrılır.
virtual void CheckRowsetError(RETCODE nRetCode);
Parametreler
nRetCode
BIR ODBC API işlevi dönüş kodu. Ayrıntılar için bkz. Açıklamalar.
Açıklamalar
Bu sanal üye işlevi, kayıtlar getirildiğinde oluşan hataları işler ve toplu satır getirme sırasında kullanışlıdır. Kendi hata işlemenizi uygulamak için geçersiz kılmayı CheckRowsetError düşünebilirsiniz.
CheckRowsetError, gibi bir imleç gezinti işleminde veya herhangi Open bir işlemde otomatik olarak RequeryMoveçağrılır. ODBC API işlevinin SQLExtendedFetchdönüş değeri geçirildi. Aşağıdaki tabloda parametresi için olası değerler listelemektedir nRetCode .
| nRetCode | Açıklama |
|---|---|
SQL_SUCCESS |
İşlev başarıyla tamamlandı; ek bilgi yoktur. |
SQL_SUCCESS_WITH_INFO |
İşlev, büyük olasılıkla önemli olmayan bir hatayla başarıyla tamamlandı. çağrılarak SQLErrorek bilgi edinilebilir. |
SQL_NO_DATA_FOUND |
Sonuç kümesindeki tüm satırlar getirilmiştir. |
SQL_ERROR |
İşlev başarısız oldu. çağrılarak SQLErrorek bilgi edinilebilir. |
SQL_INVALID_HANDLE |
İşlev geçersiz bir ortam tutamacı, bağlantı tutamacı veya deyim tanıtıcısı nedeniyle başarısız oldu. Bu, bir programlama hatası olduğunu gösterir. ile SQLErrorilgili ek bilgi yok. |
SQL_STILL_EXECUTING |
Zaman uyumsuz olarak başlatılan bir işlev hala yürütülüyor. Varsayılan olarak, MFC bu değeri hiçbir zaman öğesine CheckRowsetErrorgeçirmez; MFC, artık döndürene SQLExtendedFetchkadar çağrısına SQL_STILL_EXECUTING devam edecektir. |
hakkında SQLErrordaha fazla bilgi için bkz. Windows SDK. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::Close
Kayıt kümesini kapatır.
virtual void Close();
Açıklamalar
Odbc HSTMT ve çerçevenin kayıt kümesi için ayırmış olduğu tüm bellek serbest bırakılır. çağrısından Closesonra genellikle ile newayrılmışsa C++ kayıt kümesi nesnesini silersiniz.
çağrısı yaptıktan sonra yeniden arayabilirsiniz OpenClose. Bu, kayıt kümesi nesnesini yeniden kullanmanıza olanak tanır. Alternatif olarak öğesini çağırın Requery.
Örnek
// Construct a snapshot object
CCustomer rsCustSet(NULL);
if (!rsCustSet.Open())
return;
// Use the snapshot ...
// Close the snapshot
rsCustSet.Close();
// Destructor is called when the function exits
CRecordset::CRecordset
Bir CRecordset nesne oluşturur.
CRecordset(CDatabase* pDatabase = NULL);
Parametreler
pDatabase
Bir nesnenin işaretçisini CDatabase veya değerini NULLiçerir.
NULL Aksi takdirde ve nesnenin CDatabaseOpen üye işlevi veri kaynağına bağlamak için çağrılmadıysa, kayıt kümesi kendi Open çağrısı sırasında sizin için açmaya çalışır. geçirirseniz NULL, ClassWizard ile kayıt kümesi sınıfınızı türetdiğinizde belirttiğiniz veri kaynağı bilgileri kullanılarak bir CDatabase nesne oluşturulur ve bağlanır.
Açıklamalar
Doğrudan kullanabilir CRecordset veya uygulamasından CRecordsetuygulamaya özgü bir sınıf türetebilirsiniz. Kayıt kümesi sınıflarınızı türetmek için ClassWizard kullanabilirsiniz.
Not
Türetilmiş bir sınıf kendi oluşturucusunu sağlamalıdır . Türetilmiş sınıfınızın oluşturucusunda oluşturucuyu CRecordset::CRecordsetçağırın ve uygun parametreleri ona geçirin.
Bir nesnenin sizin için otomatik olarak oluşturup bağlanması için NULL kayıt kümesi oluşturucunuza geçirinCDatabase. Bu, kayıt kümenizi oluşturmadan önce bir nesne oluşturmanızı ve bağlamanızı gerektirmeyen kullanışlı bir CDatabase kısaltmadır.
Örnek
Daha fazla bilgi için bkz . Kayıt Kümesi: Tablo için Sınıf Bildirme (ODBC).
CRecordset::Delete
Geçerli kaydı siler.
virtual void Delete();
Açıklamalar
Başarılı bir silme işleminden sonra, kayıt kümesinin alan veri üyeleri Null değerine ayarlanır ve silinen kaydın dışına taşımak için işlevlerden birini Move açıkça çağırmanız gerekir. Silinen kayıttan çıktıktan sonra bu kayda geri dönmek mümkün değildir. Veri kaynağı işlemleri destekliyorsa, çağrıyı Delete bir işlemin parçası yapabilirsiniz. Daha fazla bilgi için bkz . İşlem (ODBC).
Not
Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız Delete. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Dikkat
Kayıt kümesinin güncelleştirilebilir olması ve çağırdığınızda Deletekayıt kümesinde geçerli bir kayıt olması gerekir; aksi takdirde bir hata oluşur. Örneğin, bir kaydı silerseniz ancak yeniden aramadan Delete önce yeni bir kayda kaydırmıyorsanız, Delete bir CDBException oluşturur.
ve AddNew'den farklı Edit olarak Delete çağrısının ardından Updateçağrısı gelmez. Bir Delete çağrı başarısız olursa, alan veri üyeleri değişmeden bırakılır.
Örnek
Bu örnekte bir işlevin çerçevesinde oluşturulmuş bir kayıt kümesi gösterilmektedir. Örnekte, veri kaynağına zaten bağlı türde m_dbCust bir üye değişkeninin olduğu CDatabasevarsayılır.
// Create a derived CRecordset object
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();
if (rsCustSet.IsEOF() || !rsCustSet.CanUpdate() ||
!rsCustSet.CanTransact())
{
return;
}
m_dbCust.BeginTrans();
// Perhaps scroll to a new record...
// Delete the current record
rsCustSet.Delete();
// Finished commands for this transaction
if (IDYES == AfxMessageBox(_T("Commit transaction?"), MB_YESNO))
m_dbCust.CommitTrans();
else // User changed mind
m_dbCust.Rollback();
CRecordset::DoBulkFieldExchange
Veri kaynağındaki toplu veri satırlarını kayıt kümesine değiştirmek için çağrılır. Toplu kayıt alanı değişimini (Toplu RFX) uygular.
virtual void DoBulkFieldExchange(CFieldExchange* pFX);
Parametreler
pFX
Nesne işaretçisi CFieldExchange . Çerçeve, alan değişimi işlemi için bir bağlam belirtmek üzere bu nesneyi zaten ayarlamış olacaktır.
Açıklamalar
Toplu satır getirme uygulandığında, çerçeve veri kaynağından kayıt kümesi nesnenize otomatik olarak veri aktarmak için bu üye işlevini çağırır.
DoBulkFieldExchange ayrıca, varsa parametre veri üyelerinizi kayıt kümesinin seçimi için SQL deyimi dizesindeki parametre yer tutucularına bağlar.
Toplu satır getirme uygulanmazsa, çerçeve çağırır DoFieldExchange. Toplu satır getirme uygulamak için üye işlevinde CRecordset::useMultiRowFetch dwOptionsbelirtmeniz gerekir.
Not
DoBulkFieldExchange yalnızca öğesinden CRecordsettüretilmiş bir sınıf kullanıyorsanız kullanılabilir. Doğrudan öğesinden CRecordsetbir kayıt kümesi nesnesi oluşturduysanız, verileri almak için üye işlevini çağırmanız GetFieldValue gerekir.
Toplu kayıt alanı değişimi (Toplu RFX), kayıt alanı değişimine (RFX) benzer. Veriler otomatik olarak veri kaynağından kayıt kümesi nesnesine aktarılır. Ancak, değişiklikleri veri kaynağına geri aktarmak için , AddNew, Editveya Delete çağıramazsınızUpdate. Sınıfı CRecordset şu anda toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamaz; ancak ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz.
ClassWizard toplu kayıt alanı değişimini desteklemez; bu nedenle, Toplu RFX işlevlerine çağrılar yazarak el ile geçersiz kılmanız DoBulkFieldExchange gerekir. Bu işlevler hakkında daha fazla bilgi için bkz . Kayıt Alanı Değişim İşlevleri.
Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC). İlgili bilgiler için bkz . Kayıt Alanı Değişimi (RFX).
CRecordset::DoFieldExchange
Kayıt kümesinin alan veri üyeleriyle veri kaynağındaki ilgili kayıt arasında veri alışverişi yapmak için (her iki yönde de) çağrılır. Kayıt alanı değişimini (RFX) uygular.
virtual void DoFieldExchange(CFieldExchange* pFX);
Parametreler
pFX
Nesne işaretçisi CFieldExchange . Çerçeve, alan değişimi işlemi için bir bağlam belirtmek üzere bu nesneyi zaten ayarlamış olacaktır.
Açıklamalar
Toplu satır getirme uygulanmadığında çerçeve, kayıt kümesi nesnenizin alan veri üyeleriyle veri kaynağındaki geçerli kaydın ilgili sütunları arasında otomatik olarak veri alışverişi yapmak için bu üye işlevini çağırır.
DoFieldExchange ayrıca, varsa parametre veri üyelerinizi kayıt kümesinin seçimi için SQL deyimi dizesindeki parametre yer tutucularına bağlar.
Toplu satır getirme uygulanırsa, çerçeve çağırır DoBulkFieldExchange. Toplu satır getirme uygulamak için üye işlevinde CRecordset::useMultiRowFetchdwOptions parametresinin Open seçeneğini belirtmeniz gerekir.
Not
DoFieldExchange yalnızca öğesinden CRecordsettüretilmiş bir sınıf kullanıyorsanız kullanılabilir. Doğrudan öğesinden CRecordsetbir kayıt kümesi nesnesi oluşturduysanız, verileri almak için GetFieldValue üye işlevini çağırmanız gerekir.
Kayıt alanı değişimi (RFX) olarak adlandırılan alan verilerinin değişimi her iki yönde de çalışır: kayıt kümesi nesnesinin alan veri üyelerinden veri kaynağındaki kaydın alanlarına ve veri kaynağındaki kayıttan kayıt kümesi nesnesine.
Türetilmiş kayıt kümesi sınıfınız için uygulamak DoFieldExchange için normalde gerçekleştirmeniz gereken tek eylem, sınıfı ClassWizard ile oluşturmak ve alan veri üyelerinin adlarını ve veri türlerini belirtmektir. Ayrıca ClassWizard'ın parametre veri üyelerini belirtmek veya dinamik olarak bağladığınız tüm sütunlarla ilgilenmek için yazdığı koda kod ekleyebilirsiniz. Daha fazla bilgi için bkz . Kayıt Kümesi: Veri Sütunlarını Dinamik Olarak Bağlama (ODBC).
ClassWizard ile türetilmiş kayıt kümesi sınıfınızı bildirdiğinizde, sihirbaz sizin için aşağıdaki örneğe benzer bir geçersiz kılma DoFieldExchange yazar:
void CCustomer::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
// Macros such as RFX_Text() and RFX_Int() are dependent on the
// type of the member variable, not the type of the field in the database.
// ODBC will try to automatically convert the column value to the requested type
RFX_Long(pFX, _T("[CustomerID]"), m_CustomerID);
RFX_Text(pFX, _T("[ContactFirstName]"), m_ContactFirstName);
RFX_Text(pFX, _T("[PostalCode]"), m_PostalCode);
RFX_Text(pFX, _T("[L_Name]"), m_L_Name);
RFX_Long(pFX, _T("[BillingID]"), m_BillingID);
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param"), m_strParam);
}
RFX işlevleri hakkında daha fazla bilgi için bkz . Kayıt Alanı Değişim İşlevleri.
hakkında DoFieldExchangedaha fazla örnek ve ayrıntı için bkz . Kayıt Alanı Değişimi: RFX Nasıl Çalışır? RFX hakkında genel bilgi için bkz . Kayıt Alanı Değişimi.
CRecordset::Edit
Geçerli kayıtta değişikliklere izin verir.
virtual void Edit();
Açıklamalar
çağrısı Edityaptıktan sonra, doğrudan değerlerini sıfırlayarak alan veri üyelerini değiştirebilirsiniz. Değişikliklerinizi veri kaynağına kaydetmek için üye işlevini çağırdığınızda Update işlem tamamlanır.
Not
Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız Edit. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Edit kayıt kümesinin veri üyelerinin değerlerini kaydeder. çağrısı Edityaparsanız, değişiklik yapın ve yeniden çağırın Edit ; kaydın değerleri ilk Edit çağrıdan önceki değerlerine geri yüklenir.
Bazı durumlarda, sütunu Null (veri içermeyen) yaparak güncelleştirmek isteyebilirsiniz. Bunu yapmak için, Null alanını işaretlemek için TRUE parametresiyle çağrısı SetFieldNull yapın; bu, sütunun güncelleştirilmesine de neden olur. Değeri değişmemiş olsa bile bir alanın veri kaynağına yazılmasını istiyorsanız TRUE parametresiyle çağrısında SetFieldDirty bulunun. Bu, alanda Null değeri olsa bile çalışır.
Veri kaynağı işlemleri destekliyorsa, çağrıyı Edit bir işlemin parçası yapabilirsiniz. Çağrıdan CDatabase::BeginTrans önce ve kayıt kümesi açıldıktan sonra çağırınEdit. Ayrıca, işlemi tamamlamak için çağrı CDatabase::CommitTrans yapmak, çağırmanın Update yerini tutmaz Edit . İşlemler hakkında daha fazla bilgi için bkz. sınıfı CDatabase.
Geçerli kilitleme moduna bağlı olarak, siz başka bir kaydı çağırana Edit veya kaydırana kadar güncelleştirilmekte olan kayıt tarafından kilitlenebilir Update veya yalnızca arama sırasında Edit kilitlenebilir. ile SetLockingModekilitleme modunu değiştirebilirsiniz.
çağrısından Updateönce yeni bir kayda kaydırdığınızda geçerli kaydın önceki değeri geri yüklenir.
CDBException Güncelleştirilemez bir kayıt kümesi çağırırsanız Edit veya geçerli kayıt yoksa bir oluşturulur.
Daha fazla bilgi için İşlem (ODBC) ve Kayıt Kümesi: Kayıtları Kilitleme (ODBC) makalelerine bakın.
Örnek
// To edit a record, first set up the edit buffer
rsCustSet.Edit();
// Then edit field data members for the record
rsCustSet.m_BillingID = 2795;
rsCustSet.m_ContactFirstName = _T("Jones Mfg");
// Finally, complete the operation
if (!rsCustSet.Update())
{
// Handle the failure to update
AfxMessageBox(_T("Couldn't update record!"));
}
CRecordset::FlushResultSet
Birden çok sonuç kümesi varsa, önceden tanımlanmış bir sorgunun (saklı yordam) sonraki sonuç kümesini alır.
BOOL FlushResultSet();
Dönüş değeri
Alınacak daha fazla sonuç kümesi varsa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Yalnızca imleci geçerli sonuç kümesinde bitirdiğinizde çağırmalısınız FlushResultSet . çağrısı FlushResultSetyaparak sonraki sonuç kümesini aldığınızda, imleciniz bu sonuç kümesinde geçerli değildir; çağrısı MoveNextyaptıktan FlushResultSet sonra üye işlevini çağırmalısınız.
Önceden tanımlanmış bir sorgu bir çıkış parametresi veya giriş/çıkış parametreleri kullanıyorsa, bu parametre değerlerini almak için döndürene FlushResultSetkadar çağırmalısınız FALSE (0 değeri).
FlushResultSet ODBC API işlevini SQLMoreResultsçağırır. veya SQLMoreResultsSQL_ERRORdöndürürse SQL_INVALID_HANDLEFlushResultSet, bir özel durum oluşturur. hakkında SQLMoreResultsdaha fazla bilgi için bkz. Windows SDK.
çağırmak FlushResultSetistiyorsanız saklı yordamınızın ilişkili alanları olması gerekir.
Örnek
Aşağıdaki kod, giriş parametresi ve çıkış parametresi ile önceden tanımlanmış bir COutParamRecordsetsorguyu temel alan ve birden çok sonuç kümesine sahip olan - türetilmiş bir nesne olduğunu varsayarCRecordset. Geçersiz kılmanın yapısına DoFieldExchange dikkat edin.
// DoFieldExchange override
//
// Only necessary to handle parameter bindings.
// Don't use CRecordset-derived class with bound
// fields unless all result sets have same schema
// OR there is conditional binding code.
void CCourses::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputParam);
RFX_Long(pFX, _T("Param1"), m_nCountParam);
// The "Param1" name here is a dummy name
// that is never used
pFX->SetFieldType(CFieldExchange::inputParam);
RFX_Text(pFX, _T("Param2"), m_strNameParam);
// The "Param2" name here is a dummy name
// that is never used
}
// Assume db is an already open CDatabase object
CCourses rs(&m_dbCust);
rs.m_strNameParam = _T("History");
// Get the first result set
// NOTE: SQL Server requires forwardOnly cursor
// type for multiple rowset returning stored
// procedures
rs.Open(CRecordset::forwardOnly,
_T("{? = CALL GetCourses( ? )}"),
CRecordset::readOnly);
// Loop through all the data in the first result set
while (!rs.IsEOF())
{
CString strFieldValue;
for (short nIndex = 0; nIndex < rs.GetODBCFieldCount(); nIndex++)
{
rs.GetFieldValue(nIndex, strFieldValue);
// TO DO: Use field value string.
}
rs.MoveNext();
}
// Retrieve other result sets...
while (rs.FlushResultSet())
{
// must call MoveNext because cursor is invalid
rs.MoveNext();
while (!rs.IsEOF())
{
CString strFieldValue;
for (short nIndex = 0; nIndex < rs.GetODBCFieldCount(); nIndex++)
{
rs.GetFieldValue(nIndex, strFieldValue);
// TO DO: Use field value string.
}
rs.MoveNext();
}
}
// All result sets have been flushed. Cannot
// use the cursor, but the output parameter,
// m_nCountParam, has now been written.
// Note that m_nCountParam is not valid until
// CRecordset::FlushResultSet has returned FALSE,
// indicating no more result sets will be returned.
// TO DO: Use m_nCountParam
// Cleanup
rs.Close();
CRecordset::GetBookmark
Geçerli kayıt için yer işareti değerini alır.
void GetBookmark(CDBVariant& varBookmark);
Parametreler
varBookmark
Geçerli kayıtta yer işaretini temsil eden bir CDBVariant nesneye başvuru.
Açıklamalar
Yer işaretlerinin kayıt kümesinde desteklenip desteklenmediğini belirlemek için çağrısı yapın CanBookmark. Destekleniyorsa yer işaretlerinin kullanılabilir olmasını sağlamak için üye işlevinin CRecordset::useBookmarksdwOptions parametresinde seçeneğini ayarlamanız Open gerekir.
Not
Yer işaretleri desteklenmiyorsa veya kullanılamıyorsa, çağrıda GetBookmark özel durum oluşturulur. Yer işaretleri yalnızca ileriye doğru kayıt kümelerinde desteklenmez.
GetBookmark geçerli kayıt için yer işaretinin değerini bir CDBVariant nesneye atar. Farklı bir kayda geçtikten sonra istediğiniz zaman bu kayda dönmek için ilgili SetBookmark nesneyle çağrısı CDBVariant yapın.
Not
Belirli kayıt kümesi işlemlerinden sonra yer işaretleri artık geçerli olmayabilir. Örneğin, ardından öğesini çağırırsanız GetBookmarkRequery, ile SetBookmarkkayda geri dönemeyebilirsiniz. öğesini güvenli bir şekilde çağırıp çağıramayacağınızı denetlemek için arayın CDatabase::GetBookmarkPersistenceSetBookmark.
Yer işaretleri ve kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) ve Kayıt Kümesi: Kaydırma (ODBC) makalelerine bakın.
CRecordset::GetDefaultConnect
Varsayılan bağlantı dizesi almak için çağrıldı.
virtual CString GetDefaultConnect();
Dönüş değeri
CString Varsayılan bağlantı dizesi içeren bir.
Açıklamalar
Çerçeve, kayıt kümesinin temel aldığı veri kaynağı için varsayılan bağlantı dizesi almak için bu üye işlevini çağırır.
ClassWizard tablolar ve sütunlar hakkında bilgi almak için içinde kullandığınız ClassWizard veri kaynağını belirleyerek bu işlevi sizin için uygular. Uygulamanızı geliştirirken bu varsayılan bağlantıya güvenmeyi muhtemelen uygun bulacaksınız. Ancak varsayılan bağlantı uygulamanızın kullanıcıları için uygun olmayabilir. Böyle bir durumda, 'nin sürümünü atarak ClassWizardbu işlevi yeniden oluşturmanız gerekir. bağlantı dizesi hakkında daha fazla bilgi için bkz. Veri Kaynağı (ODBC).
CRecordset::GetDefaultSQL
Yürütülecek varsayılan SQL dizesini almak için çağrıldı.
virtual CString GetDefaultSQL();
Dönüş değeri
CString Varsayılan SQL deyimini içeren bir.
Açıklamalar
Çerçeve, kayıt kümesinin temel aldığı varsayılan SQL deyimini almak için bu üye işlevini çağırır. Bu bir tablo adı veya SQL SELECT deyimi olabilir.
ile kayıt kümesi sınıfınızı ClassWizardbildirerek varsayılan SQL deyimini dolaylı olarak tanımlarsınız ve ClassWizard bu görevi sizin için gerçekleştirirsiniz.
Kendi kullanımınız için SQL deyimi dizesine ihtiyacınız varsa çağrısı GetSQLyapın. Bu, kayıt kümesinin kayıt kümesinin açıldığında kayıtlarını seçmek için kullanılan SQL deyimini döndürür. Sınıfınızın geçersiz kılmasında varsayılan SQL dizesini GetDefaultSQLdüzenleyebilirsiniz. Örneğin, deyimini kullanarak CALL önceden tanımlanmış bir sorguya çağrı belirtebilirsiniz. (Bununla birlikte, öğesini düzenlerseniz GetDefaultSQLveri kaynağındaki sütun sayısıyla eşleşecek şekilde de değiştirmeniz m_nFields gerektiğini unutmayın.)
Daha fazla bilgi için bkz . Kayıt Kümesi: Tablo için Sınıf Bildirme (ODBC).
Dikkat
Çerçeve bir tablo adını tanımlayamadığında, birden çok tablo adı sağlandıysa veya bir CALL deyimi yorumlanamadıysa tablo adı boş olur. Bir CALL deyimi kullandığınızda, küme ayracı ile CALL anahtar sözcük arasına veya küme ayracından önce veya deyimindeki SELECT anahtar sözcüğün önüne boşluk eklemeyinSELECT.
CRecordset::GetFieldValue
Geçerli kayıttaki alan verilerini alır.
void GetFieldValue(
LPCTSTR lpszName,
CDBVariant& varValue,
short nFieldType = DEFAULT_FIELD_TYPE);
void GetFieldValue(
LPCTSTR lpszName,
CStringA& strValue
);
void GetFieldValue(
LPCTSTR lpszName,
CStringW& strValue
);
void GetFieldValue(
short nIndex,
CDBVariant& varValue,
short nFieldType = DEFAULT_FIELD_TYPE);
void GetFieldValue(
short nIndex,
CStringA& strValue);
void GetFieldValue(
short nIndex,
CStringW& strValue);
Parametreler
lpszName
Bir alanın adı.
varValue Alanın değerini depolayacak bir CDBVariant nesneye başvuru.
nFieldType
Alanın ODBC C veri türü. varsayılan değerini kullanarak, DEFAULT_FIELD_TYPEaşağıdaki tabloya göre SQL veri türünden C veri türünü belirlemeye zorlar GetFieldValue . Aksi takdirde, veri türünü doğrudan belirtebilir veya uyumlu bir veri türü seçebilirsiniz; örneğin, herhangi bir veri türünü içine SQL_C_CHARdepolayabilirsiniz.
| C veri türü | SQL veri türü |
|---|---|
SQL_C_BIT |
SQL_BIT |
SQL_C_UTINYINT |
SQL_TINYINT |
SQL_C_SSHORT |
SQL_SMALLINT |
SQL_C_SLONG |
SQL_INTEGER |
SQL_C_FLOAT |
SQL_REAL |
SQL_C_DOUBLE |
SQL_FLOATSQL_DOUBLE |
SQL_C_TIMESTAMP |
SQL_DATESQL_TIMESQL_TIMESTAMP |
SQL_C_CHAR |
SQL_NUMERICSQL_DECIMALSQL_BIGINTSQL_CHARSQL_VARCHARSQL_LONGVARCHAR |
SQL_C_BINARY |
SQL_BINARYSQL_VARBINARYSQL_LONGVARBINARY |
ODBC veri türleri hakkında daha fazla bilgi için Windows SDK'sının Ek D'sindeki "SQL Veri Türleri" ve "C Veri Türleri" konularına bakın.
nIndex
Alanın sıfır tabanlı dizini.
strValue
Alanın veri türünden bağımsız olarak, alanın metne dönüştürülen değerini depolayacak bir CString nesne başvurusu.
Açıklamalar
Bir alanı ada veya dizine göre arayabilirsiniz. Alan değerini bir CDBVariant nesnede veya CString nesnede depolayabilirsiniz.
Toplu satır getirme işlemi uyguladıysanız, geçerli kayıt her zaman satır kümesindeki ilk kayıtta konumlandırılır. Belirli bir satır kümesi içindeki bir kayıtta kullanmak GetFieldValue için, önce üye işlevini çağırarak SetRowsetCursorPosition imleci bu satır kümesi içinde istenen satıra taşımanız gerekir. Sonra o satırı çağır GetFieldValue . Toplu satır getirme uygulamak için üye işlevinde CRecordset::useMultiRowFetchdwOptions parametresinin Open seçeneğini belirtmeniz gerekir.
Alanları tasarım zamanında statik olarak bağlamak yerine çalışma zamanında dinamik olarak getirmek için kullanabilirsiniz GetFieldValue . Örneğin, doğrudan öğesinden CRecordsetbir kayıt kümesi nesnesi bildirdiyseniz, alan verilerini almak için kullanmalısınız GetFieldValue ; kayıt alanı değişimi (RFX) veya toplu kayıt alanı değişimi (Toplu RFX) uygulanmaz.
Not
öğesinden CRecordsettüretilmeden bir kayıt kümesi nesnesi bildirirseniz, ODBC İmleç Kitaplığı yüklü değildir. İmleç kitaplığı, kayıt kümesinin en az bir ilişkili sütuna sahip olmasını gerektirir; ancak, doğrudan kullandığınızda CRecordset , sütunların hiçbiri bağlı değildir. Üye işlevi görür CDatabase::OpenEx ve CDatabase::Open imleç kitaplığının yüklenip yüklenmeyeceğini denetler.
GetFieldValue ODBC API işlevini SQLGetDataçağırır. Sürücünüz alan değerinin gerçek uzunluğu için SQL_NO_TOTAL değerinin çıkışını verirse, GetFieldValue bir özel durum oluşturur. hakkında SQLGetDatadaha fazla bilgi için bkz. Windows SDK.
Örnek
Aşağıdaki örnek kod, doğrudan öğesinden GetFieldValuebildirilen bir kayıt kümesi nesnesine yönelik çağrıları CRecordset gösterir.
// Create and open a database object;
// do not load the cursor library
CDatabase db;
db.OpenEx(NULL, CDatabase::forceOdbcDialog);
// Create and open a recordset object
// directly from CRecordset. Note that a
// table must exist in a connected database.
// Use forwardOnly type recordset for best
// performance, since only MoveNext is required
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly, _T("SELECT * FROM Customer"));
// Create a CDBVariant object to
// store field data
CDBVariant varValue;
// Loop through the recordset,
// using GetFieldValue and
// GetODBCFieldCount to retrieve
// data in all columns
short nFields = rs.GetODBCFieldCount();
while (!rs.IsEOF())
{
for (short index = 0; index < nFields; index++)
{
rs.GetFieldValue(index, varValue);
// do something with varValue
}
rs.MoveNext();
}
rs.Close();
db.Close();
Not
DAO sınıfından CDaoRecordsetCRecordset farklı olarak bir SetFieldValue üye işlevi yoktur. Doğrudan öğesinden CRecordsetbir nesne oluşturursanız, nesne etkili bir şekilde salt okunur olur.
Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::GetODBCFieldCount
Kayıt kümesi nesnenizdeki toplam alan sayısını alır.
short GetODBCFieldCount() const;
Dönüş değeri
Kayıt kümesindeki alanların sayısı.
Açıklamalar
Kayıt kümeleri oluşturma hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Oluşturma ve Kapatma (ODBC).
CRecordset::GetODBCFieldInfo
Kayıt kümesindeki alanlar hakkında bilgi alır.
void GetODBCFieldInfo(
LPCTSTR lpszName,
CODBCFieldInfo& fieldinfo);
void GetODBCFieldInfo(
short nIndex,
CODBCFieldInfo& fieldinfo);
Parametreler
lpszName
Bir alanın adı.
fieldinfo
Bir yapıya CODBCFieldInfo başvuru.
nIndex
Alanın sıfır tabanlı dizini.
Açıklamalar
İşlevin bir sürümü, bir alanı ada göre aramanıza olanak tanır. Diğer sürüm, bir alanı dizine göre aramanızı sağlar.
Döndürülen bilgiler hakkında bir açıklama için yapıya CODBCFieldInfo bakın.
Kayıt kümeleri oluşturma hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Oluşturma ve Kapatma (ODBC).
CRecordset::GetRecordCount
Kayıt kümesinin boyutunu belirler.
long GetRecordCount() const;
Dönüş değeri
Kayıt kümesindeki kayıt sayısı; Kayıt kümesi kayıt içermiyorsa 0; veya kayıt sayısı belirlenemiyorsa -1.
Açıklamalar
Dikkat
Kayıt sayısı, kullanıcı kayıtlarda ilerledikçe görülen en yüksek numaralı kayıt olan "yüksek su işareti" olarak korunur. Toplam kayıt sayısı yalnızca kullanıcı son kaydın ötesine geçtikten sonra bilinir. Performans nedenleriyle, çağırdığınızda MoveLastsayı güncelleştirilmez. Kayıtları kendiniz saymak için sıfır dışı döndürene kadar MoveNext tekrar tekrar arayınIsEOF. aracılığıyla CRecordset::AddNew kayıt eklemek ve Update sayıyı artırır; aracılığıyla bir kaydın CRecordset::Delete silinmesi sayıyı azaltır.
CRecordset::GetRowsetSize
Belirli bir getirme sırasında almak istediğiniz satır sayısı için geçerli ayarı alır.
DWORD GetRowsetSize() const;
Dönüş değeri
Belirli bir getirme sırasında alınacak satır sayısı.
Açıklamalar
Toplu satır getirme kullanıyorsanız, kayıt kümesi açıldığında varsayılan satır kümesi boyutu 25'tir; aksi takdirde, 1 olur.
Toplu satır getirme uygulamak için üye işlevinin CRecordset::useMultiRowFetchdwOptions parametresinde Open seçeneğini belirtmeniz gerekir. Satır kümesi boyutunun ayarını değiştirmek için öğesini çağırın SetRowsetSize.
Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::GetRowsFetched
Bir getirmeden sonra kaç kaydın alındığını belirler.
DWORD GetRowsFetched() const;
Dönüş değeri
Belirli bir getirmeden sonra veri kaynağından alınan satır sayısı.
Açıklamalar
Bu, toplu satır getirme işlemi gerçekleştirdiğinizde kullanışlıdır. Satır kümesi boyutu normalde bir getirmeden kaç satır alınacağını gösterir. Ancak kayıt kümesindeki toplam satır sayısı, satır kümesinde kaç satır alınacağını da etkiler. Örneğin, kayıt kümenizde dört satır kümesi boyutu ayarına sahip 10 kayıt varsa, çağırarak MoveNext kayıt kümesinde döngü yapmak, son satır kümesinin yalnızca iki kayda sahip olmasına neden olur.
Toplu satır getirme uygulamak için üye işlevinin CRecordset::useMultiRowFetchdwOptions parametresinde Open seçeneğini belirtmeniz gerekir. Satır kümesi boyutunu belirtmek için SetRowsetSize öğesini çağırın.
Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Örnek
CMultiCustomer rs(&m_dbCust);
// Set the rowset size
rs.SetRowsetSize(5);
// Open the recordset
rs.Open(CRecordset::dynaset, NULL, CRecordset::useMultiRowFetch);
// loop through the recordset by rowsets
while (!rs.IsEOF())
{
for (int rowCount = 0; rowCount < (int)rs.GetRowsFetched(); rowCount++)
{
// do something
}
rs.MoveNext();
}
rs.Close();
CRecordset::GetRowStatus
Geçerli satır kümesindeki bir satırın durumunu alır.
WORD GetRowStatus(WORD wRow) const;
Parametreler
wRow
Geçerli satır kümesindeki bir satırın tek tabanlı konumu. Bu değer 1 ile satır kümesinin boyutu arasında değişebilir.
Dönüş değeri
Satır için durum değeri. Ayrıntılar için bkz. Açıklamalar.
Açıklamalar
GetRowStatus , veri kaynağından en son alındığından bu yana satırdaki durum değişikliğini veya buna karşılık gelen wRow hiçbir satırın getirilmeyen bir değeri döndürür. Aşağıdaki tabloda olası dönüş değerleri listelemektedir.
| Durum değeri | Açıklama |
|---|---|
SQL_ROW_SUCCESS |
Satır değiştirilmez. |
SQL_ROW_UPDATED |
Satır güncelleştirildi. |
SQL_ROW_DELETED |
Satır silindi. |
SQL_ROW_ADDED |
Satır eklendi. |
SQL_ROW_ERROR |
Bir hata nedeniyle satıra ulaşılamıyor. |
SQL_ROW_NOROW |
Hiçbir satır öğesine wRowkarşılık gelir. |
Daha fazla bilgi için bkz. Windows SDK'sında ODBC API işlevi SQLExtendedFetch .
CRecordset::GetStatus
Kayıt kümesindeki geçerli kaydın dizinini ve son kaydın görülmüş olup olmadığını belirler.
void GetStatus(CRecordsetStatus& rStatus) const;
Parametreler
rStatus
Bir nesneye CRecordsetStatus başvuru. Daha fazla bilgi için bkz . Açıklamalar.
Açıklamalar
CRecordset dizini izlemeye çalışır, ancak bazı durumlarda bu mümkün olmayabilir. Açıklama için bkz GetRecordCount .
Yapı CRecordsetStatus aşağıdaki biçimdedir:
struct CRecordsetStatus
{
long m_lCurrentRecord;
BOOL m_bRecordCountFinal;
};
iki üyesi CRecordsetStatus aşağıdaki anlamlara sahiptir:
m_lCurrentRecordBiliniyorsa kayıt kümesindeki geçerli kaydın sıfır tabanlı dizinini içerir. Dizin belirlenemezse, bu üye (-2) içerirAFX_CURRENT_RECORD_UNDEFINED. TRUE iseIsBOF(boş kayıt kümesi veya ilk kayıt öncesinde kaydırmayı dene), (m_lCurrentRecord-1) olarak ayarlanırAFX_CURRENT_RECORD_BOF. İlk kayıtta ise 0, ikinci kayıt 1 vb. olarak ayarlanır.m_bRecordCountFinalKayıt kümesindeki toplam kayıt sayısı belirlendiyse sıfır olmayan. Genellikle bu, kayıt kümesinin başlangıcından başlayıp sıfır olmayan döndürene kadarMoveNextçağrılarakIsEOFgerçekleştirilmelidir. Bu üye sıfırsa, -1 değilse tarafındanGetRecordCountdöndürülen kayıt sayısı, kayıtların yalnızca "yüksek su işareti" sayısıdır.
CRecordset::GetSQL
Kayıt kümesinin kayıtları açıldığında seçmek için kullanılan SQL deyimini almak için bu üye işlevini çağırın.
const CString& GetSQL() const;
Dönüş değeri
const SQL deyimini içeren bir CString başvuru.
Açıklamalar
Bu genellikle bir SQL SELECT deyimi olacaktır. tarafından GetSQL döndürülen dize salt okunurdur.
tarafından GetSQL döndürülen dize genellikle parametresindeki lpszSQLOpen kayıt kümesine üye işlevine geçirmiş olabileceğiniz herhangi bir dizeden farklıdır. Bunun nedeni, kayıt kümesinin ile belirttiğiniz, ve OpenClassWizard veri üyelerinde m_strFilter belirtmiş olabileceğiniz ve belirtmiş olabileceğiniz parametrelere göre m_strSorttam bir SQL deyimi oluşturmasıdır. Kayıt kümesinin bu SQL deyimini nasıl oluşturması hakkında ayrıntılı bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC).
Not
Bu üye işlevini yalnızca çağrısı yaptıktan sonra çağır Open.
CRecordset::GetTableName
Kayıt kümesinin sorgusunun temel aldığı SQL tablosunun adını alır.
const CString& GetTableName() const;
Dönüş değeri
Kayıt const kümesi bir tabloyu temel alırsa tablo adını içeren bir başvuru CString ; aksi takdirde boş bir dize.
Açıklamalar
GetTableName yalnızca kayıt kümesinin birden çok tablonun veya önceden tanımlanmış bir sorgunun (saklı yordam) birleşimini değil, bir tabloyu temel alması durumunda geçerlidir. Ad salt okunur.
Not
Bu üye işlevini yalnızca çağrısı yaptıktan sonra çağır Open.
CRecordset::IsBOF
Kayıt kümesi ilk kayıt öncesinde konumlandırılmışsa sıfır olmayan değerini döndürür. Geçerli kayıt yok.
BOOL IsBOF() const;
Dönüş değeri
Kayıt kümesinde kayıt yoksa veya ilk kayıt öncesinde geriye doğru kaydırma yaptıysanız sıfır olmayan; aksi takdirde 0.
Açıklamalar
Kayıttan kayda kaydırmadan önce bu üye işlevini çağırarak kayıt kümesinin ilk kaydından önce gidip gitmediğiniz hakkında bilgi edinin. Kayıt kümesinin herhangi bir kayıt içerdiğini veya boş olup olmadığını belirlemek için ile IsBOF birlikte kullanabilirsinizIsEOF. çağrısından Openhemen sonra, kayıt kümesi hiçbir kayıt içermiyorsa sıfır IsBOF olmayan bir değer döndürür. En az bir kaydı olan bir kayıt kümesini açtığınızda, ilk kayıt geçerli kayıttır ve IsBOF 0 döndürür.
İlk kayıt geçerli kayıtsa ve öğesini çağırırsanız MovePrevIsBOF sıfır olmayan bir değer döndürür. Sıfır olmayan değerini döndürür ve IsBOF çağrısı MovePrevyaparsanız bir hata oluşur. Sıfır olmayan döndürürse IsBOF geçerli kayıt tanımlanmamış olur ve geçerli kayıt gerektiren tüm eylemler hataya neden olur.
Örnek
Bu örnek, kod kayıt kümesinde her iki yönde kaydırdıkça kayıt kümesinin sınırlarını algılamak için ve IsBOF kullanırIsEOF.
// Open a recordset; first record is current
// Open a recordset; first record is current
CCustomer rsCustSet(&m_dbCust);
rsCustSet.Open();
if(rsCustSet.IsBOF())
return;
// The recordset is empty
// Scroll to the end of the recordset, past
// the last record, so no record is current
while (!rsCustSet.IsEOF())
rsCustSet.MoveNext();
// Move to the last record
rsCustSet.MoveLast();
// Scroll to beginning of the recordset, before
// the first record, so no record is current
while(!rsCustSet.IsBOF())
rsCustSet.MovePrev();
// First record is current again
rsCustSet.MoveFirst();
CRecordset::IsDeleted
Geçerli kaydın silinip silinmediğini belirler.
BOOL IsDeleted() const;
Dönüş değeri
Kayıt kümesi silinmiş bir kayıtta konumlandırıldıysa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bir kayda IsDeleted kaydırıp (sıfır olmayan) döndürürseniz TRUE , diğer kayıt kümesi işlemlerini gerçekleştirebilmek için önce başka bir kayda kaydırmanız gerekir.
sonucu IsDeleted , kayıt kümenizin türü, kayıt kümenizin güncelleştirilebilir olup olmadığı, kayıt kümesini açtığınızda seçeneği belirtip belirtmediğiniz, sürücünüzün CRecordset::skipDeletedRecords silinen kayıtları paketleyip paketlemediği ve birden çok kullanıcı olup olmadığı gibi birçok faktöre bağlıdır.
Ve sürücü paketleme hakkında CRecordset::skipDeletedRecords daha fazla bilgi için bkz . Open member işlevi.
Not
Toplu satır getirme işlemini uyguladıysanız çağırmamalısınız IsDeleted. Bunun yerine GetRowStatus üye işlevini çağırın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::IsEOF
Kayıt kümesi son kayıt sonrasında konumlandırıldıysa sıfır olmayan değerini döndürür. Geçerli kayıt yok.
BOOL IsEOF() const;
Dönüş değeri
Kayıt kümesinde kayıt yoksa veya son kaydın ötesine geçtiyseniz sıfır olmayan; aksi takdirde 0.
Açıklamalar
Kayıttan kayda kaydırdığınızda kayıt kümesinin son kaydının ötesine geçtiğinizi öğrenmek için bu üye işlevini çağırın. Kayıt kümesinin herhangi bir kayıt mı içerdiğini yoksa boş mu olduğunu belirlemek için de kullanabilirsiniz IsEOF . çağrısından Openhemen sonra, kayıt kümesi hiçbir kayıt içermiyorsa sıfır IsEOF olmayan bir değer döndürür. En az bir kaydı olan bir kayıt kümesini açtığınızda, ilk kayıt geçerli kayıttır ve IsEOF 0 döndürür.
Çağrısı MoveNextIsEOF yaptığınızda son kayıt geçerli kayıtsa sıfır olmayan bir değer döndürür. Sıfır olmayan değerini döndürür ve IsEOF çağrısı MoveNextyaparsanız bir hata oluşur. Sıfır olmayan döndürürse IsEOF geçerli kayıt tanımlanmamış olur ve geçerli kayıt gerektiren tüm eylemler hataya neden olur.
Örnek
örneğine IsBOFbakın.
CRecordset::IsFieldDirty
Belirtilen alan veri üyesinin bu tarihten sonra mı Edit yoksa çağrıldığından mı AddNew değiştirildiğini belirler.
BOOL IsFieldDirty(void* pv);
Parametreler
pv
Durumunu denetlemek istediğiniz alan veri üyesinin işaretçisi veya NULL alanlardan herhangi birinin kirli olup olmadığını belirlemek için.
Dönüş değeri
Belirtilen alan veri üyesi çağrıldıktan AddNew sonra değiştiyse sıfır olmayan veya Editdeğilse 0.
Açıklamalar
Tüm kirli alan veri üyelerindeki veriler, geçerli kayıt üye işlevine Update yapılan bir çağrıyla güncelleştirildiğinde (veya CRecordsetçağrısının Edit ardından) veri kaynağındaki AddNew kayda aktarılır.
Not
Bu üye işlevi, toplu satır getirme kullanan kayıt kümelerinde geçerli değildir. Toplu satır getirme işlemi uyguladıysanız, IsFieldDirty her zaman YANLIŞ döndürür ve başarısız onaylama işlemiyle sonuçlanır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Alanın kirli durumu yeniden değerlendirildiğinden, aramaIsFieldDirty, SetFieldDirty'ye yapılan önceki çağrıların etkilerini sıfırlar.
AddNew Bu durumda, geçerli alan değeri sahte null değerden farklıysa, alan durumu kirli olarak ayarlanır.
Edit Bu durumda, alan değeri önbelleğe alınan değerden farklıysa, alan durumu kirli olarak ayarlanır.
IsFieldDirty aracılığıyla DoFieldExchangeuygulanır.
Kirli bayrak hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC).
CRecordset::IsFieldNull
Geçerli kayıtta belirtilen alan Null ise (değeri yok) sıfır olmayan bir değer döndürür.
BOOL IsFieldNull(void* pv);
Parametreler
pv
Durumunu denetlemek istediğiniz alan veri üyesinin işaretçisi veya NULL alanlardan birinin Null olup olmadığını belirlemek için.
Dönüş değeri
Belirtilen alan veri üyesi Null olarak işaretlenmişse sıfır olmayan; aksi takdirde 0.
Açıklamalar
Bir kayıt kümesinin belirtilen alan veri üyesinin Null olarak işaretlenip işaretlenmediğini belirlemek için bu üye işlevini çağırın. (Veritabanı terminolojisinde Null değerin olmadığı anlamına gelir ve C++ ile aynı NULL değildir.) Alan veri üyesi Null olarak işaretlenirse, geçerli kaydın değeri olmayan bir sütunu olarak yorumlanır.
Not
Bu üye işlevi, toplu satır getirme kullanan kayıt kümelerinde geçerli değildir. Toplu satır getirme işlemi uyguladıysanız, IsFieldNull her zaman döndürülecek FALSE ve başarısız onaylama işlemine neden olacaktır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
IsFieldNull aracılığıyla DoFieldExchangeuygulanır.
CRecordset::IsFieldNullable
Geçerli kayıtta belirtilen alan Null (değer olmadan) olarak ayarlanabiliyorsa sıfır olmayan değerini döndürür.
BOOL IsFieldNullable(void* pv);
Parametreler
pv
Durumunu denetlemek istediğiniz alan veri üyesinin işaretçisi veya NULL alanlardan herhangi birinin Null değere ayarlanabilir olup olmadığını belirleme.
Açıklamalar
Belirtilen alan veri üyesinin "null atanabilir" olup olmadığını belirlemek için bu üye işlevini çağırın (Null değerine ayarlanabilir; C++ NULL , veritabanı terminolojisinde "değere sahip değil" anlamına gelen Null ile aynı değildir.
Not
Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız IsFieldNullable. Bunun yerine, bir alanın Null değerine ayarlanıp ayarlanamayacağını belirlemek için üye işlevini çağırın GetODBCFieldInfo . Toplu satır getirme gerçekleştirip uygulamadığınıza bakılmaksızın her zaman öğesini çağırabilirsiniz GetODBCFieldInfo. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Null olmayan bir alanın değeri olmalıdır. Kayıt eklerken veya güncelleştirirken böyle bir alanı Null olarak ayarlamaya çalışırsanız, veri kaynağı toplamayı veya güncelleştirmeyi reddeder ve Update bir özel durum oluşturur. Özel durum, çağrısı Updateyaptığınızda değil çağırdığınızda SetFieldNulloluşur.
NULL işlevinin ilk bağımsız değişkeni için kullanıldığında işlev alanlara değil outputColumn yalnızca alanlara param uygulanır. Örneğin, arama
SetFieldNull(NULL);
yalnızca outputColumn alanları olarak NULLayarlar; param alanlar etkilenmez.
Alanlar üzerinde param çalışmak için, üzerinde çalışmak istediğiniz kişinin param gerçek adresini sağlamanız gerekir, örneğin:
SetFieldNull(&m_strParam);
Başka bir deyişle, tüm param alanları olarak NULLayarlayamazsınız, alanlar gibi outputColumn .
IsFieldNullableDoFieldExchange aracılığıyla uygulanır.
CRecordset::IsOpen
Kayıt kümesinin zaten açık olup olmadığını belirler.
BOOL IsOpen() const;
Dönüş değeri
Kayıt kümesi nesnesinin Open veya Requery üye işlevinin daha önce çağrılıp kayıt kümesinin kapatılmaması durumunda sıfır olmayan; aksi takdirde 0.
CRecordset::m_hstmt
Kayıt kümesiyle ilişkilendirilmiş türünde HSTMTODBC deyimi veri yapısının tanıtıcısını içerir.
Açıklamalar
ODBC veri kaynağına yapılan her sorgu ile HSTMTilişkilendirilir.
Dikkat
Daha önce çağrılmadan önce m_hstmt kullanmayınOpen.
Normalde doğrudan öğesine erişmeniz HSTMT gerekmez, ancak SQL deyimlerinin doğrudan yürütülmesi için buna ihtiyacınız olabilir.
ExecuteSQL sınıfının CDatabase member işlevi, kullanma m_hstmtörneği sağlar.
CRecordset::m_nFields
Kayıt kümesi sınıfındaki alan veri üyesi sayısını içerir; diğer bir ifadeyle, veri kaynağından kayıt kümesi tarafından seçilen sütun sayısıdır.
Açıklamalar
Kayıt kümesi sınıfının oluşturucusunun doğru sayı ile başlatılması m_nFields gerekir. Toplu satır getirme uygulamadıysanız, ClassWizard kayıt kümesi sınıfınızı bildirmek için kullandığınızda bu başlatmayı sizin için yazar. El ile de yazabilirsiniz.
Çerçeve, alan veri üyeleriyle veri kaynağındaki geçerli kaydın ilgili sütunları arasındaki etkileşimi yönetmek için bu sayıyı kullanır.
Dikkat
Bu numara, parametresiyle DoFieldExchangeçağrısında veya DoBulkFieldExchange sonrasında SetFieldType kaydedilen CFieldExchange::outputColumn "çıkış sütunlarının" sayısına karşılık olmalıdır.
"Kayıt Kümesi: Veri Sütunlarını Dinamik Olarak Bağlama" makalesinde açıklandığı gibi sütunları dinamik olarak bağlayabilirsiniz. Bunu yaparsanız, dinamik olarak bağlı sütunlar için veya m_nFields üye işlevinizdeki RFX veya Toplu RFX işlev çağrılarının sayısını yansıtacak şekilde içindeki sayısını DoFieldExchange artırmanız DoBulkFieldExchange gerekir.
Daha fazla bilgi için Recordset: Dynamically Binding Data Columns (ODBC) ve Recordset: Fetching Records in Bulk (ODBC) makalelerine bakın.
Örnek
bkz . Kayıt Alanı Değişimi: RFX kullanma.
CRecordset::m_nParams
Kayıt kümesi sınıfındaki parametre veri üyesi sayısını içerir; diğer bir ifadeyle, kayıt kümesinin sorgusuyla geçirilen parametre sayısıdır.
Açıklamalar
Kayıt kümesi sınıfınızda herhangi bir parametre veri üyesi varsa, sınıfın oluşturucusunun doğru sayı ile başlatılması m_nParams gerekir. değerinin m_nParams varsayılan değeri 0'dır. Parametre veri üyeleri eklerseniz (el ile yapmanız gerekir), parametre sayısını yansıtmak için sınıf oluşturucusunda el ile bir başlatma da eklemeniz gerekir (en az veya m_strFilter dizenizdeki m_strSort '' yer tutucularının sayısı kadar büyük olmalıdır).
Çerçeve, kayıt kümesinin sorgusunu parametreleştirdiğinde bu sayıyı kullanır.
Dikkat
Bu numara, içinde veya çağrısından DoFieldExchange sonra , , DoBulkFieldExchangeSetFieldTypeveya CFieldExchange::inputParamparametre değeriyle CFieldExchange::paramkaydedilen CFieldExchange::outputParam "params" sayısına karşılık CFieldExchange::inoutParam gelir.
Örnek
Kayıt Kümesi: Kayıt Kümesini Parametreleştirme (ODBC) ve Kayıt Alanı Değişimi: RFX Kullanma makalelerine bakın.
CRecordset::m_pDatabase
Kayıt kümesinin CDatabase bir veri kaynağına bağlandığı nesneye ilişkin bir işaretçi içerir.
Açıklamalar
Bu değişken iki şekilde ayarlanır. Genellikle, kayıt kümesi nesnesini oluştururken zaten bağlı CDatabase olan bir nesneye işaretçi geçirirsiniz. Bunun yerine geçirirseniz NULL , CRecordset sizin için bir CDatabase nesne oluşturur ve bunu bağlar. Her iki durumda da işaretçiyi CRecordset bu değişkende depolar.
Normalde içinde depolanan m_pDatabaseişaretçiyi doğrudan kullanmanız gerekmez. Ancak kendi uzantılarınızı CRecordsetyazarsanız işaretçiyi kullanmanız gerekebilir. Örneğin, kendi CDBExceptionişaretçinizi atarsanız işaretçiye ihtiyacınız olabilir. Veya aynı CDatabase nesneyi kullanarak işlem çalıştırma, zaman aşımlarını ayarlama veya SQL deyimlerini doğrudan yürütmek için sınıfın ExecuteSQLCDatabase üye işlevini çağırma gibi bir işlem yapmanız gerekiyorsa buna ihtiyacınız olabilir.
CRecordset::m_strFilter
Kayıt kümesi nesnesini oluşturulduktan sonra, ancak üye işlevini çağırmadan önce, sql Open yan tümcesi CString içeren bir WHERE depolamak için bu veri üyesini kullanın.
Açıklamalar
Kayıt kümesi, veya Open çağrısı sırasında seçtiği kayıtları kısıtlamak (veya filtrelemek) için bu dizeyi Requery kullanır. Bu, "California'da bulunan tüm satış temsilcileri" ("eyalet = CA") gibi kayıtların bir alt kümesini seçmek için kullanışlıdır. Yan WHERE tümcenin ODBC SQL söz dizimi şudur:
WHERE search-condition
Dizenize anahtar sözcüğünü WHERE eklemeyin. Çerçeve bunu sağlar.
Ayrıca, her yer tutucu için sınıfınızda bir parametre veri üyesi bildirerek ve çalışma zamanında kayıt kümesine parametreler geçirerek filtre dizenizi parametreleştirebilirsiniz. Bu, çalışma zamanında filtreyi oluşturmanıza olanak tanır. Daha fazla bilgi için bkz . Kayıt Kümesi: Kayıt Kümesini Parametreleştirme (ODBC).
SQL WHERE yan tümceleri hakkında daha fazla bilgi için bkz . SQL. Kayıtları seçme ve filtreleme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Filtreleme (ODBC).
Örnek
CCustomer rsCustSet(&m_dbCust);
// Set the filter
rsCustSet.m_strFilter = _T("L_Name = 'Flanders'");
// Run the filtered query
rsCustSet.Open(CRecordset::snapshot, _T("Customer"));
CRecordset::m_strSort
Kayıt kümesi nesnesini oluşturulduktan sonra, ancak üye işlevini çağırmadan önce, sql Open yan tümcesi CString içeren bir ORDER BY depolamak için bu veri üyesini kullanın.
Açıklamalar
Kayıt kümesi, veya Open çağrısı sırasında seçtiği kayıtları sıralamak için bu dizeyi Requery kullanır. Bir veya daha fazla sütundaki kayıt kümesini sıralamak için bu özelliği kullanabilirsiniz. Yan ORDER BY tümce için ODBC SQL söz dizimi şu şekildedir:
ORDER BY sort-specification [, sort-specification]...
burada sıralama belirtimi bir tamsayı veya sütun adıdır. Sıralama dizesindeki sütun listesine "ASC" veya "DESC" ekleyerek artan veya azalan düzen de belirtebilirsiniz (düzen varsayılan olarak artan düzendir). Seçili kayıtlar önce listelenen ilk sütuna, sonra ikinciye göre vb. sıralanır. Örneğin, bir "Müşteriler" kayıt kümesini soyadına ve ardından adlara göre sıralayabilirsiniz. Listeleyebileceğiniz sütun sayısı veri kaynağına bağlıdır. Daha fazla bilgi için bkz. Windows SDK.
Dizenize anahtar sözcüğünü ORDER BY eklemeyin. Çerçeve bunu sağlar.
SQL yan tümceleri hakkında daha fazla bilgi için bkz . SQL. Kayıtları sıralama hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Sıralama (ODBC).
Örnek
CCustomer rsCustSet(&m_dbCust);
// Set the sort string
rsCustSet.m_strSort = _T("L_Name, ContactFirstName");
// Run the sorted query
rsCustSet.Open(CRecordset::snapshot, _T("Customer"));
CRecordset::Move
Kayıt kümesi içindeki geçerli kayıt işaretçisini ileri veya geri taşır.
virtual void Move(
long nRows,
WORD wFetchType = SQL_FETCH_RELATIVE);
Parametreler
nRows
İleri veya geri taşınacak satır sayısı. Pozitif değerler, kayıt kümesinin sonuna doğru ilerler. Negatif değerler başa doğru geriye doğru hareket eder.
wFetchType
Getirilecek satır kümesini Move belirler. Ayrıntılar için bkz. Açıklamalar.
Açıklamalar
için nRowsMove 0 değerini geçirirseniz, geçerli kaydı yeniler; Move geçerli AddNew kaydı veya Edit modu sona erdirir ve geçerli kaydın değerini çağrılmadan önce AddNew geri Edit yükler.
Not
Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız. Daha fazla bilgi edinmek için bkz. CRecordset::IsDeleted. seçeneğinin ayarlandığı bir CRecordsetskipDeletedRecords dosyasını açtığınızda, Move parametre 0 ise nRows onaylar. Bu davranış, aynı verileri kullanan diğer istemci uygulamaları tarafından silinen satırların yenilenmesini engeller.
dwOption açıklaması için içindeki Open parametresine skipDeletedRecordsbakın.
Move kayıt kümesini satır kümelerine göre yeniden konumlandırır. ve nRowswFetchType değerlerini Move temel alarak uygun satır kümesini getirir ve ardından bu satır kümesindeki ilk kaydı geçerli kayıt yapar. Toplu satır getirme uygulamadıysanız satır kümesi boyutu her zaman 1 olur. Satır kümesi getirilirken, Move getirmeden CheckRowsetError kaynaklanan hataları işlemek için üye işlevini doğrudan çağırır.
Geçirdiğiniz değerlere bağlı olarak, Move diğer CRecordset üye işlevlerine eşdeğerdir. Özellikle değeri wFetchType , daha sezgisel ve genellikle geçerli kaydı taşımak için tercih edilen yöntem olan bir üye işlevini gösterebilir.
Aşağıdaki tabloda, ve temelinde getirilecek wFetchType satır kümesi Move ve wFetchTypeöğesine karşılık gelen nRowstüm eşdeğer üye işlevleri için wFetchTypeolası değerler listelenir.
| wFetchType (Getirme) | Getirilen satır kümesi | Eşdeğer üye işlevi |
|---|---|---|
SQL_FETCH_RELATIVE (varsayılan değer) |
Satır kümesinin geçerli satır kümesinin ilk satırından satır nRows başlatması. |
|
SQL_FETCH_NEXT |
Sonraki satır kümesi; nRows yoksayılır. |
MoveNext |
SQL_FETCH_PRIOR |
Önceki satır kümesi; nRows yoksayılır. |
MovePrev |
SQL_FETCH_FIRST |
Kayıt kümesindeki ilk satır kümesi; nRows yoksayılır. |
MoveFirst |
SQL_FETCH_LAST |
Kayıt kümesindeki son tam satır kümesi; nRows yoksayılır. |
MoveLast |
SQL_FETCH_ABSOLUTE |
0 ise nRows> , satır kümesi kayıt kümesinin başından başlayarak satırları başlatır nRows . 0 ise nRows< , satır kümesi kayıt kümesinin sonundaki satırları başlatır nRows . = 0 ise nRows , dosya başlangıcı (BOF) koşulu döndürülür. |
SetAbsolutePosition |
SQL_FETCH_BOOKMARK |
Yer işareti değeri öğesine karşılık gelen nRowssatırdan başlayan satır kümesi. |
SetBookmark |
Not
Yalnızca ileriye doğru kayıt kümeleri için yalnızca Move değeri SQL_FETCH_NEXT ile wFetchTypegeçerlidir.
Dikkat
Kayıt kümesinde kayıt yoksa çağrısı Move özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsBOFöğesini çağırınIsEOF.
Not
Kayıt kümesinin başını veya sonunu kaydırdıysanız (IsBOF veya IsEOF sıfır olmayan bir değer döndürürse), işlevi Move çağırmak büyük olasılıkla bir CDBExceptionoluşturur. Örneğin sıfır olmayan döndürür ve IsEOF döndürmezse IsBOFMoveNext bir özel durum oluşturur, ancak MovePrev oluşturmaz.
Not
Geçerli kayıt güncelleştirilirken veya eklenirken ararsanız Move , güncelleştirmeler uyarı olmadan kaybolur.
Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC). İlgili bilgiler için bkz. Windows SDK'sında ODBC API işlevi SQLExtendedFetch .
Örnek
// rs is a CRecordset or a CRecordset-derived object
// Change the rowset size to 5
rs.SetRowsetSize(5);
// Open the recordset
rs.Open(CRecordset::dynaset, NULL, CRecordset::useMultiRowFetch);
// Move to the first record in the recordset
rs.MoveFirst();
// Move to the sixth record
rs.Move(5);
// Other equivalent ways to move to the sixth record:
rs.Move(6, SQL_FETCH_ABSOLUTE);
rs.SetAbsolutePosition(6);
// In this case, the sixth record is the first record in the next rowset,
// so the following are also equivalent:
rs.MoveFirst();
rs.Move(1, SQL_FETCH_NEXT);
rs.MoveFirst();
rs.MoveNext();
CRecordset::MoveFirst
İlk satır kümesindeki ilk kaydı geçerli kayıt yapar.
void MoveFirst();
Açıklamalar
Toplu satır getirmenin uygulanıp uygulanmadığına bakılmaksızın, bu her zaman kayıt kümesindeki ilk kayıt olacaktır.
Kayıt kümesini açtıktan hemen sonra çağırmanız MoveFirst gerekmez. Bu sırada, ilk kayıt (varsa) otomatik olarak geçerli kayıt olur.
Not
Bu üye işlevi yalnızca ileriye doğru kayıt kümeleri için geçerli değildir.
Not
Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız.
IsDeleted Ayrıntılar için üye işlevine bakın.
Dikkat
Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsBOFöğesini çağırınIsEOF.
Not
Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.
Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Örnek
örneğine IsBOFbakın.
CRecordset::MoveLast
Son tam satır kümesindeki ilk kaydı geçerli kayıt yapar.
void MoveLast();
Açıklamalar
Toplu satır getirme uygulamadıysanız, kayıt kümenizin satır kümesi boyutu 1'tir, bu nedenle MoveLast kayıt kümesindeki son kayda geçer.
Not
Bu üye işlevi yalnızca ileriye doğru kayıt kümeleri için geçerli değildir.
Not
Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız.
IsDeleted Ayrıntılar için üye işlevine bakın.
Dikkat
Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsBOFöğesini çağırınIsEOF.
Not
Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.
Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Örnek
örneğine IsBOFbakın.
CRecordset::MoveNext
Sonraki satır kümesindeki ilk kaydı geçerli kayıt yapar.
void MoveNext();
Açıklamalar
Toplu satır getirme uygulamadıysanız, kayıt kümenizin satır kümesi boyutu 1'tir, bu nedenle MoveNext sonraki kayda geçer.
Not
Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız.
IsDeleted Ayrıntılar için üye işlevine bakın.
Dikkat
Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsBOFöğesini çağırınIsEOF.
Not
Ayrıca çağrısı öncesinde de aramanız IsEOFMoveNextönerilir. Örneğin, kayıt kümesinin sonunu kaydırdıysanız sıfır IsEOF olmayan bir değer döndürür; sonraki bir çağrısı MoveNext özel durum oluşturur.
Not
Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.
Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Örnek
örneğine IsBOFbakın.
CRecordset::MovePrev
Önceki satır kümesindeki ilk kaydı geçerli kayıt yapar.
void MovePrev();
Açıklamalar
Toplu satır getirme uygulamadıysanız, kayıt kümenizin satır kümesi boyutu 1'tir, bu nedenle MovePrev önceki kayda geçer.
Not
Bu üye işlevi yalnızca ileriye doğru kayıt kümeleri için geçerli değildir.
Not
Kayıt kümesinde gezinirken, silinen kayıtları atlayamazsınız.
IsDeleted Ayrıntılar için üye işlevine bakın.
Dikkat
Kayıt kümesinde Move kayıt yoksa işlevlerden herhangi birinin çağrılması bir özel durum oluşturur. Kayıt kümesinin herhangi bir kaydı olup olmadığını belirlemek için ve IsBOFöğesini çağırınIsEOF.
Not
Ayrıca çağrısı öncesinde de aramanız IsBOFMovePrevönerilir. Örneğin, kayıt kümesinin başlangıcının ilerisine kaydırdıysanız sıfır IsBOF olmayan bir değer döndürür; sonraki bir çağrısı MovePrev özel durum oluşturur.
Not
Geçerli kayıt güncelleştirilirken veya eklenirken işlevlerden herhangi birini Move çağırırsanız, güncelleştirmeler uyarı olmadan kaybolur.
Kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Örnek
örneğine IsBOFbakın.
CRecordset::OnSetOptions
Belirtilen ODBC deyimi için seçenekleri ayarlamak için çağrılır (seçimde kullanılır).
virtual void OnSetOptions(HSTMT hstmt);
Parametreler
hstmt
HSTMT Seçenekleri ayarlanacak ODBC deyiminin değeri.
Açıklamalar
Belirtilen ODBC deyimi için seçenekleri ayarlama çağrısı OnSetOptions (seçimde kullanılır). Çerçeve, kayıt kümesi için başlangıç seçeneklerini ayarlamak üzere bu üye işlevini çağırır.
OnSetOptions kaydırılabilir imleçler ve imleç eşzamanlılığı için veri kaynağının desteğini belirler ve kayıt kümesinin seçeneklerini buna göre ayarlar. (Seçim işlemleri için kullanılırken OnSetOptions , OnSetUpdateOptions güncelleştirme işlemleri için kullanılır.)
Sürücüye veya veri kaynağına özgü seçenekleri ayarlamak için geçersiz kılın OnSetOptions . Örneğin, veri kaynağınız özel erişim için açmayı destekliyorsa, bu beceriden yararlanmak için geçersiz kılabilirsiniz OnSetOptions .
İmleçler hakkında daha fazla bilgi için bkz . ODBC.
CRecordset::OnSetUpdateOptions
Belirtilen ODBC deyimi için seçenekleri ayarlamak (güncelleştirmede kullanılır) için çağrılır.
virtual void OnSetUpdateOptions(HSTMT hstmt);
Parametreler
hstmt
HSTMT Seçenekleri ayarlanacak ODBC deyiminin değeri.
Açıklamalar
Belirtilen ODBC deyimi için seçenekleri ayarlama çağrısı OnSetUpdateOptions (güncelleştirmede kullanılır). Çerçeve, kayıt kümesindeki kayıtları güncelleştirmek için bir HSTMT oluşturduğunda bu üye işlevini çağırır. (Seçim işlemleri için kullanılırken OnSetOptions , OnSetUpdateOptions güncelleştirme işlemleri için kullanılır.) OnSetUpdateOptions veri kaynağının kaydırılabilir imleçler ve imleç eşzamanlılığı desteğini belirler ve kayıt kümesinin seçeneklerini buna göre ayarlar.
Veritabanına erişmek için bu deyim kullanılmadan önce ODBC deyiminin seçeneklerini ayarlamak için geçersiz kılın OnSetUpdateOptions .
İmleçler hakkında daha fazla bilgi için bkz . ODBC.
CRecordset::Open
Tabloyu alarak veya kayıt kümesinin temsil ettiği sorguyu gerçekleştirerek kayıt kümesini açar.
virtual BOOL Open(
UINT nOpenType = AFX_DB_USE_DEFAULT_TYPE,
LPCTSTR lpszSQL = NULL,
DWORD dwOptions = none);
Parametreler
nOpenType
varsayılan değerini AFX_DB_USE_DEFAULT_TYPEkabul edin veya aşağıdaki değerlerden enum OpenTypebirini kullanın:
CRecordset::dynasetçift yönlü kaydırmaya sahip bir kayıt kümesi. Kayıt kümesinin açılması kayıtların üyeliğini ve sırasını belirler, ancak diğer kullanıcılar tarafından veri değerlerinde yapılan değişiklikler bir getirme işleminden sonra görünür. Dinamik kümeler, anahtar kümesi temelli kayıt kümeleri olarak da bilinir.CRecordset::snapshotçift yönlü kaydırma ile statik kayıt kümesi. Kayıt kümesinin açılması, kayıtların üyeliğini ve sırasını belirler. Kayıt getirilerek veri değerleri belirlenir. Kayıt kümesi kapatılıp yeniden açılana kadar diğer kullanıcılar tarafından yapılan değişiklikler görünmez.CRecordset::dynamicçift yönlü kaydırmaya sahip bir kayıt kümesi. Diğer kullanıcılar tarafından üyelik, sıralama ve veri değerlerinde yapılan değişiklikler getirme işleminden sonra görünür. Birçok ODBC sürücüsü bu tür kayıt kümesini desteklemez.CRecordset::forwardOnlyYalnızca ileri kaydırmaya sahip salt okunur kayıt kümesi.için
CRecordsetvarsayılan değer şeklindedirCRecordset::snapshot. Varsayılan değer mekanizması, Visual Studio sihirbazlarının hem ODBCCRecordsethem de DAOCDaoRecordsetile etkileşim kurmasına olanak tanır ve bu da farklı varsayılanlara sahiptir.
Bu kayıt kümesi türleri hakkında daha fazla bilgi için bkz . Kayıt Kümesi (ODBC). İlgili bilgiler için Windows SDK'sında "Blok ve Kaydırılabilir İmleçleri Kullanma" bölümüne bakın.
Dikkat
İstenen tür desteklenmiyorsa, çerçeve bir özel durum oluşturur.
lpszSQL
Aşağıdakilerden birini içeren bir dize işaretçisi:
İşaretçi
NULL.Tablonun adı.
SQL
SELECTdeyimi (isteğe bağlı olarak SQLWHEREveyaORDER BYyan tümcesi ile).CALLÖnceden tanımlanmış sorgunun adını belirten bir deyim (saklı yordam). Küme ayracı ileCALLanahtar sözcük arasına boşluk eklememeye dikkat edin.
Bu dize hakkında daha fazla bilgi için Açıklamalar bölümünde ClassWizard'ın rolünün tablosuna ve tartışmalarına bakın.
Not
Sonuç kümenizdeki sütunların sırası, veya DoFieldExchange işlevi geçersiz kılmanızdaki DoBulkFieldExchange RFX veya Toplu RFX işlev çağrılarının sırasıyla eşleşmelidir.
dwOptions
Aşağıda listelenen değerlerin bir bileşimini belirtebilen bit maskesi. Bunlardan bazıları birbirini dışlar. Varsayılan değer şudur: none.
CRecordset::noneSeçenek ayarlanmadı. Bu parametre değeri diğer tüm değerlerle birbirini dışlar. Varsayılan olarak, kayıt kümesi veyaEditileDeletegüncelleştirilebilir ve ileAddNewyeni kayıtların eklenmesine izin verir. Güncelleştirilebilirlik, veri kaynağına ve belirttiğiniz seçeneğenOpenTypebağlıdır. Toplu eklemeler için iyileştirme kullanılamaz. Toplu satır getirme uygulanmaz. Kayıt kümesi gezintisi sırasında silinen kayıtlar atlanmayacaktır. Yer işaretleri kullanılamaz. Otomatik kirli alan denetimi uygulanır.CRecordset::appendOnlyKayıt kümesinde veyaEditDeleteizin verme. Yalnızca izin verAddNew. Bu seçenek ileCRecordset::readOnlybirbirini dışlar.CRecordset::readOnlyKayıt kümesini salt okunur olarak açın. Bu seçenek ileCRecordset::appendOnlybirbirini dışlar.CRecordset::optimizeBulkAddBir kerede çok sayıda kayıt eklemeyi iyileştirmek için hazırlanmış bir SQL deyimi kullanın. Yalnızca kayıt kümesini güncelleştirmek için ODBC API işleviniSQLSetPoskullanmıyorsanız geçerlidir. İlk güncelleştirme, hangi alanların kirli olarak işaretleneceğini belirler. Bu seçenek ileCRecordset::useMultiRowFetchbirbirini dışlar.CRecordset::useMultiRowFetchTek bir getirme işleminde birden çok satırın alınmasına izin vermek için toplu satır getirme uygulayın. Bu, performansı geliştirmek için tasarlanmış gelişmiş bir özelliktir; ancak, toplu kayıt alanı değişimi tarafındanClassWizarddesteklenmez. Bu seçenek ileCRecordset::optimizeBulkAddbirbirini dışlar. belirtirsenizCRecordset::useMultiRowFetch, seçenekCRecordset::noDirtyFieldCheckotomatik olarak açılır (çift arabelleğe alma kullanılamaz); yalnızca ileri kayıt kümelerinde seçenekCRecordset::useExtendedFetchotomatik olarak açılır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).CRecordset::skipDeletedRecordsKayıt kümesinde gezinirken silinen tüm kayıtları atlayın. Bu, belirli göreli getirme işlemlerinde performansı yavaşlatacaktır. Bu seçenek yalnızca ileriye doğru kayıt kümelerinde geçerli değildir. nRowsMoveonaylanır.CRecordset::skipDeletedRecordssürücü paketlemeye benzer; bu da silinen satırların kayıt kümesinden kaldırıldığı anlamına gelir. Ancak, sürücünüz kayıtları paketlerse, yalnızca sildiğiniz kayıtları atlar; kayıt kümesi açıkken diğer kullanıcılar tarafından silinen kayıtları atlamaz.CRecordset::skipDeletedRecordsdiğer kullanıcılar tarafından silinen satırları atlar.CRecordset::useBookmarksDestekleniyorsa kayıt kümesindeki yer işaretlerini kullanabilir. Yer işaretleri veri alımını yavaşlatsa da veri gezintisi performansını artırır. Yalnızca iletilen kayıt kümelerinde geçerli değil. Daha fazla bilgi için bkz . Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC).CRecordset::noDirtyFieldCheckOtomatik kirli alan denetimini (çift arabelleğe alma) kapatın. Bu, performansı geliştirir; ancak veSetFieldDirtyüye işlevlerini çağırarakSetFieldNullalanları el ile kirli olarak işaretlemeniz gerekir. sınıfında çift arabelleğe alma, sınıfındaCRecordsetCDaoRecordsetçift arabelleğe alma işlemine benzer. Ancak içinde,CRecordsettek tek alanlarda çift arabelleğe almayı etkinleştiremezsiniz; tüm alanlar için etkinleştirebilir veya tüm alanlar için devre dışı bırakabilirsiniz. seçeneğiniCRecordset::useMultiRowFetchCRecordset::noDirtyFieldCheckbelirtirseniz, otomatik olarak açılır; ancakSetFieldDirtySetFieldNulltoplu satır getirme uygulayan kayıt kümelerinde kullanılamaz.CRecordset::executeDirectHazırlanmış bir SQL deyimi kullanmayın. Gelişmiş performans için üye işlevi hiçbir zaman çağrılmayacaksaRequerybu seçeneği belirtin.CRecordset::useExtendedFetchyerineSQLExtendedFetchuygulayınSQLFetch. Bu, yalnızca ileriye doğru kayıt kümelerinde toplu satır getirme uygulamak için tasarlanmıştır. SeçeneğiCRecordset::useMultiRowFetchyalnızca ileriye doğru kayıt kümesinde belirtirseniz otomatikCRecordset::useExtendedFetcholarak açılır.CRecordset::userAllocMultiRowBuffersKullanıcı veriler için depolama arabellekleri ayırır. Kendi depolama alanınızı ayırmak istiyorsanız ile bu seçeneğiCRecordset::useMultiRowFetchkullanın. Aksi takdirde, çerçeve gerekli depolamayı otomatik olarak ayırır. Daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).CRecordset::userAllocMultiRowBuffersBaşarısız bir onay ile sonuç belirtmedenCRecordset::useMultiRowFetchbelirtme.
Dönüş değeri
Nesne başarıyla açıldıysa CRecordset sıfır olmayan; aksi takdirde (çağrılırsa CDatabase::Open ) 0 döndürür.
Açıklamalar
Kayıt kümesi tarafından tanımlanan sorguyu çalıştırmak için bu üye işlevini çağırmanız gerekir. çağrısından Openönce kayıt kümesi nesnesini oluşturmanız gerekir.
Bu kayıt kümesinin veri kaynağına bağlantısı, çağırmadan Openönce kayıt kümesini nasıl oluşturduğunuza bağlıdır. Veri kaynağına bağlanmamış bir CDatabase nesneyi kayıt kümesi oluşturucusna geçirirseniz, bu üye işlevi veritabanı nesnesini açmaya çalışmak için kullanır GetDefaultConnect . Kayıt kümesi oluşturucusna NULL geçirirseniz, oluşturucu sizin için bir CDatabase nesne oluşturur ve Open veritabanı nesnesini bağlamaya çalışır. Bu farklı koşullar altında kayıt kümesini ve bağlantıyı kapatma hakkında ayrıntılı bilgi için bkz Close. .
Not
Bir nesne üzerinden CRecordset veri kaynağına erişim her zaman paylaşılır. sınıfından CDaoRecordset farklı olarak, özel erişime sahip bir CRecordset veri kaynağını açmak için nesne kullanamazsınız.
çağırdığınızda Open, genellikle SQL SELECT deyimi olan bir sorgu, aşağıdaki tabloda gösterilen ölçütlere göre kayıtları seçer.
Parametrenin lpszSQL değeri |
Seçilen kayıtlar | Örnek |
|---|---|---|
NULL |
tarafından GetDefaultSQLdöndürülen dize. |
|
| SQL tablo adı | veya DoFieldExchangeiçindeki tablo listesinin DoBulkFieldExchange tüm sütunları. |
"Customer" |
| Önceden tanımlanmış sorgu (saklı yordam) adı | Sorgunun döndürmek için tanımlandığı sütunlar. | "{call OverDueAccts}" |
SELECT sütun-listesi FROM tablo-listesi |
Belirtilen tablolardan belirtilen sütunlar. | "SELECT CustId, CustName FROMCustomer" |
Dikkat
SQL dizenize fazladan boşluk eklemeyin. Örneğin, küme ayracı ile CALL anahtar sözcüğü arasına boşluk eklerseniz, MFC SQL dizesini tablo adı olarak yanlış yorumlar ve bunu bir SELECT deyimine ekler ve bu da bir özel durum oluşur. Benzer şekilde, önceden tanımlanmış sorgunuz bir çıkış parametresi kullanıyorsa küme ayracı ile '' simgesi arasına boşluk eklemeyin. Son olarak, bir deyimdeki küme ayracından önce veya deyimindeki CALL anahtar sözcüğünden SELECTSELECT önce boşluk eklememelisiniz.
Her zamanki yordam adresine geçmektir NULLOpen; bu durumda GetDefaultSQL'i Opençağırır. Türetilmiş CRecordset bir sınıf kullanıyorsanız, GetDefaultSQL içinde ClassWizardbelirttiğiniz tablo adlarını verir. Bunun yerine parametresinde lpszSQL başka bilgiler belirtebilirsiniz.
Ne geçirirseniz geçirin, Open sorgu için son bir SQL dizesi oluşturur (dizede geçirdiğiniz dizeye WHERE SQL ORDER BY ve lpszSQL yan tümceleri eklenmiş olabilir) ve sorguyu yürütür. çağrısından GetSQLsonra çağırarakOpen, oluşturduğunuz dizeyi inceleyebilirsiniz. Kayıt kümesinin sql deyimi oluşturma ve kayıtları seçme hakkında daha fazla ayrıntı için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC).
Kayıt kümesi sınıfınızın alan verileri üyeleri, seçilen verilerin sütunlarına bağlıdır. Herhangi bir kayıt döndürülürse, ilk kayıt geçerli kayıt olur.
Kayıt kümesi için filtre veya sıralama gibi seçenekleri ayarlamak istiyorsanız, kayıt kümesi nesnesini oluşturarak ancak çağırmadan Openönce bunları belirtin. Kayıt kümesi zaten açık olduktan sonra kayıt kümesindeki kayıtları yenilemek istiyorsanız çağrısında bulunur Requery.
Daha fazla örnek de dahil olmak üzere daha fazla bilgi için bkz . Kayıt Kümesi (ODBC), Kayıt Kümesi: Kayıt Kümeleri Kayıtları Seçme (ODBC) ve Kayıt Kümesi: Kayıt Kümeleri Oluşturma ve Kapatma (ODBC).
Örnek
Aşağıdaki kod örnekleri çağrının Open farklı biçimlerini gösterir.
// rsSnap, rsLName, and rsDefault are CRecordset or CRecordset-derived
// objects
// Open rs using the default SQL statement, implement bookmarks, and turn
// off automatic dirty field checking
rsSnap.Open(CRecordset::snapshot, NULL, CRecordset::useBookmarks |
CRecordset::noDirtyFieldCheck);
// Pass a complete SELECT statement and open as a dynaset
rsLName.Open(CRecordset::dynaset, _T("Select L_Name from Customer"));
// Accept all defaults
rsDefault.Open();
CRecordset::RefreshRowset
Geçerli satır kümesindeki bir satırın verilerini ve durumunu güncelleştirir.
void RefreshRowset(
WORD wRow,
WORD wLockType = SQL_LOCK_NO_CHANGE);
Parametreler
wRow
Geçerli satır kümesindeki bir satırın tek tabanlı konumu. Bu değer sıfırdan satır kümesinin boyutuna kadar değişebilir.
wLockType
Satırın yenilendikten sonra nasıl kilitlendiğini gösteren değer. Ayrıntılar için bkz. Açıklamalar.
Açıklamalar
için wRowsıfır değerini geçirirseniz satır kümesindeki her satır yenilenir.
kullanmak RefreshRowsetiçin üye işlevinde CRecordset::useMulitRowFetch seçeneğini belirterek Open toplu satır getirme işlemini uygulamış olmanız gerekir.
RefreshRowset ODBC API işlevini SQLSetPosçağırır.
wLockType parametresi, yürütüldükten sonra SQLSetPos satırın kilit durumunu belirtir. Aşağıdaki tabloda için wLockTypeolası değerler açıklanmaktadır.
| wLockType (Kilit) | Açıklama |
|---|---|
SQL_LOCK_NO_CHANGE (varsayılan değer) |
Sürücü veya veri kaynağı, satırın çağrılmadan önce RefreshRowset olduğu gibi aynı kilitli veya kilitsiz durumda olmasını sağlar. |
SQL_LOCK_EXCLUSIVE |
Sürücü veya veri kaynağı satırı özel olarak kilitler. Tüm veri kaynakları bu tür bir kilidi desteklemez. |
SQL_LOCK_UNLOCK |
Sürücü veya veri kaynağı satırın kilidini açar. Tüm veri kaynakları bu tür bir kilidi desteklemez. |
hakkında SQLSetPosdaha fazla bilgi için bkz. Windows SDK. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::Requery
Kayıt kümesini yeniden oluşturur (yeniler).
virtual BOOL Requery();
Dönüş değeri
Kayıt kümesi başarıyla yeniden oluşturulduysa sıfır olmayan; aksi takdirde 0.
Açıklamalar
Herhangi bir kayıt döndürülürse, ilk kayıt geçerli kayıt olur.
Kayıt kümesinin sizin veya diğer kullanıcıların veri kaynağına yaptığı eklemeleri ve silmeleri yansıtması için, çağırarak Requerykayıt kümesini yeniden oluşturmanız gerekir. Kayıt kümesi bir dinamik kümeyse, sizin veya diğer kullanıcıların mevcut kayıtlarında (eklemeleri değil) yaptığı güncelleştirmeleri otomatik olarak yansıtır. Kayıt kümesi bir anlık görüntüyse, diğer kullanıcılar tarafından yapılan düzenlemeleri, eklemeleri ve silmeleri yansıtmak için aramanız Requery gerekir.
Dinamik küme veya anlık görüntü için, kayıt kümesini yeni bir filtre veya sıralama ya da yeni parametre değerleri kullanarak yeniden oluşturmak istediğiniz zaman çağırın Requery . öğesine ve çağrısından m_strFilterönce yeni değerler m_strSort atayarak yeni filtre veya Requery sıralama özelliğini ayarlayın. çağrısı Requeryöncesinde parametre veri üyelerine yeni değerler atayarak yeni parametreler ayarlayın. Filtre ve sıralama dizeleri değişmezse, sorguyu yeniden kullanabilir ve bu da performansı artırır.
Kayıt kümesini yeniden oluşturma girişimi başarısız olursa, kayıt kümesi kapatılır. çağrısından Requeryönce, üye işlevini çağırarak kayıt kümesinin yeniden sorgulanıp sorgulanamadığını CanRestart belirleyebilirsiniz.
CanRestart bunun başarılı olacağını garanti Requery etmez.
Dikkat
Yalnızca Requery çağrısı yaptıktan sonra arayın Open.
Örnek
Bu örnek, farklı bir sıralama düzeni uygulamak için kayıt kümesini yeniden oluşturur.
CCustomer rsCustSet(&m_dbCust);
// Open the recordset
rsCustSet.Open();
// Use the recordset ...
// Set the sort order and Requery the recordset
rsCustSet.m_strSort = _T("L_Name, ContactFirstName");
if (!rsCustSet.CanRestart())
return; // Unable to requery
if (!rsCustSet.Requery())
// Requery failed, so take action
AfxMessageBox(_T("Requery failed!"));
CRecordset::SetAbsolutePosition
Kayıt kümesini belirtilen kayıt numarasına karşılık gelen kayıtta konumlandırın.
void SetAbsolutePosition(long nRows);
Parametreler
nRows
Kayıt kümesindeki geçerli kaydın tek tabanlı sıralı konumu.
Açıklamalar
SetAbsolutePosition geçerli kayıt işaretçisini bu sıralı konuma göre taşır.
Not
Bu üye işlevi yalnızca ileriye doğru kayıt kümelerinde geçerli değildir.
ODBC kayıt kümeleri için mutlak konum ayarı 1, kayıt kümesindeki ilk kayda başvurur; 0 ayarı, dosya başlangıcı (BOF) konumuna başvurur.
Negatif değerleri öğesine SetAbsolutePositionde geçirebilirsiniz. Bu durumda, kayıt kümesinin konumu kayıt kümesinin sonundan değerlendirilir. Örneğin, SetAbsolutePosition( -1 ) geçerli kayıt işaretçisini kayıt kümesindeki son kayda taşır.
Not
Mutlak konum, vekil kayıt numarası olarak kullanılmak üzere tasarlanmamıştır. Önceki kayıtlar silindiğinde kaydın konumu değiştiğinden yer işaretleri yine de belirli bir konuma geri dönmenin önerilen yoludur. Ayrıca, bir yan tümcesi kullanılarak ORDER BY sql deyimiyle oluşturulmadığı sürece kayıt kümesi içindeki tek tek kayıtların sırası garanti edilmediğinden, kayıt kümesi yeniden oluşturulursa belirli bir kaydın aynı mutlak konuma sahip olacağından emin olamazsınız.
Kayıt kümesi gezintisi ve yer işaretleri hakkında daha fazla bilgi için Kayıt Kümesi: Kaydırma (ODBC) ve Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) makalelerine bakın.
CRecordset::SetBookmark
Kayıt kümesini belirtilen yer işaretini içeren kayda konumlandırıyor.
void SetBookmark(const CDBVariant& varBookmark);
Parametreler
varBookmark
Belirli bir CDBVariant kaydın yer işareti değerini içeren bir nesneye başvuru.
Açıklamalar
Yer işaretlerinin kayıt kümesinde desteklenip desteklenmediğini belirlemek için çağrısı yapın CanBookmark. Destekleniyorsa yer işaretlerinin kullanılabilir olmasını sağlamak için üye işlevinin CRecordset::useBookmarksdwOptions parametresinde seçeneğini ayarlamanız Open gerekir.
Not
Yer işaretleri desteklenmiyorsa veya kullanılamıyorsa, çağrıda SetBookmark özel durum oluşturulur. Yer işaretleri yalnızca ileriye doğru kayıt kümelerinde desteklenmez.
Önce geçerli kaydın yer işaretini almak için çağrısı GetBookmarkyapın ve bu da yer işareti değerini bir CDBVariant nesneye kaydeder. Daha sonra kaydedilen yer işareti değerini kullanarak çağırarak SetBookmark bu kayda dönebilirsiniz.
Not
Belirli kayıt kümesi işlemlerinin ardından, çağrısından SetBookmarkönce yer işareti kalıcılığını denetlemeniz gerekir. Örneğin, ile GetBookmark bir yer işareti alıp çağrısı Requeryyaparsanız, yer işareti artık geçerli olmayabilir. öğesini güvenli bir şekilde çağırıp çağıramayacağınızı denetlemek için arayın CDatabase::GetBookmarkPersistenceSetBookmark.
Yer işaretleri ve kayıt kümesi gezintisi hakkında daha fazla bilgi için Kayıt Kümesi: Yer İşaretleri ve Mutlak Konumlar (ODBC) ve Kayıt Kümesi: Kaydırma (ODBC) makalelerine bakın.
CRecordset::SetFieldDirty
Kayıt kümesinin alan veri üyesini değiştirilmiş veya değişmemiş olarak bayraklar.
void SetFieldDirty(void* pv, BOOL bDirty = TRUE);
Parametreler
pv
veya NULLkayıt kümesindeki bir alan veri üyesinin adresini içerir. ise NULL, kayıt kümesindeki tüm alan verileri üyelerine bayrak eklenir. (C++ NULL , veritabanı terminolojisindeki Null ile aynı değildir ve bu da "değere sahip olmadığı" anlamına gelir.)
bDirty
TRUE alan veri üyesi "kirli" (değiştirildi) olarak işaretlenecekse. Aksi takdirde FALSE , alan veri üyesi "temiz" (değişmeden) olarak işaretlenecekse.
Açıklamalar
Alanları değişmemiş olarak işaretlemek, alanın güncelleştirilmemesini ve daha az SQL trafiğiyle sonuçlanmasını sağlar.
Not
Bu üye işlevi, toplu satır getirme kullanan kayıt kümelerinde geçerli değildir. Toplu satır getirme işlemini uyguladıysanız başarısız SetFieldDirty onay işlemiyle sonuçlanır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Çerçeve, değiştirilen alan veri üyelerini işaretleyerek kayıt alanı değişimi (RFX) mekanizması tarafından veri kaynağındaki kayda yazılmasını sağlar. Bir alanın değerinin değiştirilmesi genellikle alanı otomatik olarak kirli olarak ayarlar, bu nedenle nadiren kendinizi çağırmanız SetFieldDirty gerekir, ancak bazen alan veri üyesindeki değerden bağımsız olarak sütunların açıkça güncelleştirilmesini veya eklenmesini isteyebilirsiniz.
NULL işlevinin ilk bağımsız değişkeni için kullanıldığında işlev alanlara değil outputColumn yalnızca alanlara param uygulanır. Örneğin, arama
SetFieldNull(NULL);
yalnızca outputColumn alanları olarak NULLayarlar; param alanlar etkilenmez.
Alanlar üzerinde param çalışmak için, üzerinde çalışmak istediğiniz kişinin param gerçek adresini sağlamanız gerekir, örneğin:
SetFieldNull(&m_strParam);
Başka bir deyişle, tüm param alanları olarak NULLayarlayamazsınız, alanlar gibi outputColumn .
CRecordset::SetFieldNull
Kayıt kümesinin alan veri üyesini Null (özellikle değer içermeyen) veya Null olmayan olarak bayraklar.
void SetFieldNull(void* pv, BOOL bNull = TRUE);
Parametreler
pv
veya NULLkayıt kümesindeki bir alan veri üyesinin adresini içerir. ise NULL, kayıt kümesindeki tüm alan verileri üyelerine bayrak eklenir. (C++ NULL , veritabanı terminolojisindeki Null ile aynı değildir ve bu da "değere sahip olmadığı" anlamına gelir.)
bNull
Alan veri üyesi hiçbir değere (Null) sahip olarak işaretlenecekse sıfır olmayan. Aksi takdirde, alan veri üyesi Null olmayan olarak işaretlenecekse 0.
Açıklamalar
Kayıt kümesine yeni bir kayıt eklediğinizde, tüm alan veri üyeleri başlangıçta Null değerine ayarlanır ve "kirli" (değiştirildi) olarak işaretlenir. Bir veri kaynağından kayıt aldığınızda, sütunlarının değerleri zaten vardır veya Null'tır.
Not
Toplu satır getirme kullanan kayıt kümelerinde bu üye işlevini çağırmayın. Toplu satır getirme işlemi uyguladıysanız çağrılması SetFieldNull başarısız bir onay işlemiyle sonuçlanır. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
Geçerli kaydın bir alanını özellikle değere sahip değil olarak belirlemek istiyorsanız, null olarak işaretlemek için SetFieldNull set ile bNull çağrısı TRUE yapın. Bir alan daha önce Null olarak işaretlendiyse ve şimdi ona bir değer vermek istiyorsanız, yeni değerini ayarlayın. ile SetFieldNullNull bayrağını kaldırmanız gerekmez. Alanın Null olmasına izin verilip verilmeyeceğini belirlemek için öğesini çağırın IsFieldNullable.
NULL işlevinin ilk bağımsız değişkeni için kullanıldığında işlev alanlara değil outputColumn yalnızca alanlara param uygulanır. Örneğin, arama
SetFieldNull(NULL);
yalnızca outputColumn alanları olarak NULLayarlar; param alanlar etkilenmez.
Alanlar üzerinde param çalışmak için, üzerinde çalışmak istediğiniz kişinin param gerçek adresini sağlamanız gerekir, örneğin:
SetFieldNull(&m_strParam);
Başka bir deyişle, tüm param alanları olarak NULLayarlayamazsınız, alanlar gibi outputColumn .
Not
Parametreleri Null olarak ayarlarken, kayıt kümesi açılmadan önce çağrısı SetFieldNull bir onay ile sonuçlanır. Bu durumda çağrısında bulunur SetParamNull.
SetFieldNull aracılığıyla DoFieldExchangeuygulanır.
CRecordset::SetLockingMode
Kilitleme modunu "iyimser" kilitleme (varsayılan) veya "kötümser" kilitleme olarak ayarlar. Kayıtların güncelleştirmelere karşı nasıl kilitlendiğini belirler.
void SetLockingMode(UINT nMode);
Parametreler
nMode
aşağıdaki değerlerden enum LockModebirini içerir:
optimisticİyimser kilitleme yalnızca çağrısıUpdatesırasında güncelleştirilen kaydı kilitler.pessimisticKötümser kilitleme, çağrılır çağrılmazEditkaydı kilitler ve arama tamamlananaUpdateveya yeni bir kayda taşınana kadar kaydı kilitli tutar.
Açıklamalar
Kayıt kümesinin güncelleştirmeler için hangi kayıt kilitleme stratejilerini kullandığını belirtmeniz gerekiyorsa bu üye işlevini çağırın. Varsayılan olarak, kayıt kümesinin kilitleme modu şeklindedir optimistic. Bunu daha dikkatli pessimistic bir kilitleme stratejisiyle değiştirebilirsiniz.
SetLockingMode Kayıt kümesi nesnesini oluşturduğunuzda ve açtıktan sonra ancak çağırmadan önce çağrısı Edityapın.
CRecordset::SetParamNull
Bir parametreyi Null (özellikle değer içermeyen) veya Null olmayan olarak bayraklar.
void SetParamNull(
int nIndex,
BOOL bNull = TRUE);
Parametreler
nIndex
Parametresinin sıfır tabanlı dizini.
bNull
If TRUE (varsayılan değer), parametresi Null olarak işaretlenir. Aksi takdirde parametresi Null olmayan olarak işaretlenir.
Açıklamalar
'den farklı olarak SetFieldNull, kayıt kümesini açmadan önce çağırabilirsiniz SetParamNull .
SetParamNull genellikle önceden tanımlanmış sorgularla (saklı yordamlar) kullanılır.
CRecordset::SetRowsetCursorPosition
İmleci geçerli satır kümesi içindeki bir satıra taşır.
void SetRowsetCursorPosition(WORD wRow, WORD wLockType = SQL_LOCK_NO_CHANGE);
Parametreler
wRow
Geçerli satır kümesindeki bir satırın tek tabanlı konumu. Bu değer 1 ile satır kümesinin boyutu arasında değişebilir.
wLockType
Satır yenilendikten sonra nasıl kilitlendiğini gösteren değer. Ayrıntılar için bkz. Açıklamalar.
Açıklamalar
Toplu satır getirme uygulanırken kayıtlar satır kümeleri tarafından alınır ve burada getirilen satır kümesindeki ilk kayıt geçerli kayıttır. Satır kümesinde geçerli kayıt içinde başka bir kayıt yapmak için çağrısı yapın SetRowsetCursorPosition. Örneğin, kayıt kümenizin herhangi bir kaydındaki verileri dinamik olarak almak için üye işleviyle SetRowsetCursorPosition birleştirebilirsinizGetFieldValue.
kullanmak SetRowsetCursorPositioniçin, üye işlevinde parametresinin CRecordset::useMultiRowFetch seçeneğini dwOptions belirterek Open toplu satır getirme işlemini uygulamış olmanız gerekir.
SetRowsetCursorPosition ODBC API işlevini SQLSetPosçağırır.
wLockType parametresi, yürütüldükten sonra SQLSetPos satırın kilit durumunu belirtir. Aşağıdaki tabloda için wLockTypeolası değerler açıklanmaktadır.
wLockType |
Açıklama |
|---|---|
SQL_LOCK_NO_CHANGE (varsayılan değer) |
Sürücü veya veri kaynağı, satırın çağrılmadan önce SetRowsetCursorPosition olduğu gibi aynı kilitli veya kilitsiz durumda olmasını sağlar. |
SQL_LOCK_EXCLUSIVE |
Sürücü veya veri kaynağı satırı özel olarak kilitler. Tüm veri kaynakları bu tür bir kilidi desteklemez. |
SQL_LOCK_UNLOCK |
Sürücü veya veri kaynağı satırın kilidini açar. Tüm veri kaynakları bu tür bir kilidi desteklemez. |
hakkında SQLSetPosdaha fazla bilgi için bkz. Windows SDK. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::SetRowsetSize
Getirme sırasında almak istediğiniz kayıt sayısını belirtir.
virtual void SetRowsetSize(DWORD dwNewRowsetSize);
Parametreler
dwNewRowsetSize
Belirli bir getirme sırasında alınacak satır sayısı.
Açıklamalar
Bu sanal üye işlevi, toplu satır getirme kullanılırken tek bir getirme sırasında kaç satır almak istediğinizi belirtir. Toplu satır getirme uygulamak için üye işlevinin CRecordset::useMultiRowFetchdwOptions parametresinde Open seçeneğini ayarlamanız gerekir.
Not
Toplu satır getirme uygulanmadan çağrılması SetRowsetSize başarısız bir onay işlemine neden olur.
Çağırmadan önce çağırarak SetRowsetSizeOpen başlangıçta kayıt kümesinin satır kümesi boyutunu ayarlayın. Toplu satır getirme uygulanırken varsayılan satır kümesi boyutu 25'tir.
Not
çağrısı SetRowsetSizeyaparken dikkatli olun. Veriler için depolama alanını el ile ayırıyorsanız (içinde dwOptions parametresinin CRecordset::userAllocMultiRowBuffersseçeneğiyle Open belirtildiği gibi), çağrısı SetRowsetSizeyaptıktan sonra ancak herhangi bir imleç gezintisi işlemi gerçekleştirmeden önce bu depolama arabelleklerini yeniden ayırmanız gerekip gerekmediğini denetlemeniz gerekir.
Satır kümesi boyutu için geçerli ayarı almak için öğesini çağırın GetRowsetSize.
Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
CRecordset::Update
Yeni veya AddNew düzenlenmiş verileri veri kaynağına kaydederek veya Edit işlemini tamamlar.
virtual BOOL Update();
Dönüş değeri
Bir kayıt başarıyla güncelleştirildiyse sıfır olmayan; aksi takdirde hiçbir sütun değişmediyse 0 olur. Hiçbir kayıt güncelleştirilmemişse veya birden fazla kayıt güncelleştirildiyse bir özel durum oluşturulur. Veri kaynağındaki diğer hatalar için de bir özel durum oluşturulur.
Açıklamalar
veya AddNew üye işlevine yapılan çağrıdan sonra bu üye işlevini çağırınEdit. Bu çağrı, veya AddNew işlemini tamamlamak Edit için gereklidir.
Not
Toplu satır getirme işlemini uyguladıysanız öğesini çağıramazsınız Update. Bu, başarısız bir onaylama işlemine neden olur. Sınıfı CRecordset , toplu veri satırlarını güncelleştirmek için bir mekanizma sağlamasa da, ODBC API işlevini SQLSetPoskullanarak kendi işlevlerinizi yazabilirsiniz. Toplu satır getirme hakkında daha fazla bilgi için bkz . Kayıt Kümesi: Kayıtları Toplu Getirme (ODBC).
AddNew Hem hem de Edit eklenen veya düzenlenen verilerin veri kaynağına kaydedilecek şekilde yerleştirildiği bir düzenleme arabelleği hazırlayın.
Update verileri kaydeder. Yalnızca değiştirilmiş olarak işaretlenen veya algılanan alanlar güncelleştirilir.
Veri kaynağı işlemleri destekliyorsa, çağrıyı Update (ve buna karşılık gelen AddNew veya Edit çağrısını) bir işlemin parçası yapabilirsiniz. İşlemler hakkında daha fazla bilgi için bkz . İşlem (ODBC).
Dikkat
veya çağrısı yapmadan ararsanız UpdateAddNewEdit, Update bir CDBExceptionoluşturur. veya çağırırsanızAddNew, bir Edit işlemi çağırmadan önce veya kayıt kümesini veya veri kaynağı bağlantısını kapatmadan önce çağırmalısınızUpdate.Move Aksi takdirde, değişiklikleriniz bildirimde bulunmadan kaybolur.
Hataları işleme Update hakkında ayrıntılı bilgi için bkz . Kayıt Kümesi: Kayıt Kümeleri Kayıtları Güncelleştirme (ODBC).
Örnek
bkz . İşlem: Kayıt Kümesinde İşlem Gerçekleştirme (ODBC).
Ayrıca bkz.
CObject sınıfı
Hiyerarşi grafiği
CDatabase sınıfı
CRecordView sınıfı