CDaoException Sınıfı
Veri erişim nesnelerini (DAO) temel alan MFC veritabanı sınıflarından kaynaklanan bir özel durum koşulunu temsil eder.
Not
Veri Erişim Nesnesi (DAO), Office 2013 aracılığıyla desteklenir. DAO 3.6 son sürümdür ve kullanımdan kaldırılmış durumdadır.
class CDaoException : public CException
Veri Akışı Adı | Açıklama |
---|---|
CDaoException::CDaoException | Bir CDaoException nesne oluşturur. |
Veri Akışı Adı | Açıklama |
---|---|
CDaoException::GetErrorCount | Veritabanı altyapısının Errors koleksiyonundaki hata sayısını döndürür. |
CDaoException::GetErrorInfo | Errors koleksiyonundaki belirli bir hata nesnesiyle ilgili hata bilgilerini döndürür. |
Veri Akışı Adı | Açıklama |
---|---|
CDaoException::m_nAfxDaoError | MFC DAO sınıflarındaki herhangi bir hata için genişletilmiş bir hata kodu içerir. |
CDaoException::m_pErrorInfo | Bir DAO hata nesnesi hakkında bilgi içeren bir CDaoErrorInfo nesnesi işaretçisi. |
CDaoException::m_scode | Hatayla ilişkili SCODE değeri. |
sınıfı, özel durumun nedenini belirlemek için kullanabileceğiniz genel veri üyelerini içerir. CDaoException
nesneleri DAO veritabanı sınıflarının üye işlevleri tarafından oluşturulur ve oluşturulur.
Not
DAO veritabanı sınıfları, Açık Veritabanı Bağlantısı (ODBC) temelinde MFC veritabanı sınıflarından farklıdır. Tüm DAO veritabanı sınıf adları "CDao" ön ekini alır. DAO sınıflarıyla ODBC veri kaynaklarına erişmeye devam edebilirsiniz. Genel olarak, DAO tabanlı MFC sınıfları ODBC tabanlı MFC sınıflarından daha yeteneklidir; DAO tabanlı sınıflar, ODBC sürücüleri de dahil olmak üzere verilere kendi veritabanı altyapısı üzerinden erişebilir. DAO tabanlı sınıflar, DAO'yu doğrudan çağırmak zorunda kalmadan sınıflar aracılığıyla tablo ekleme gibi Veri Tanım Dili (DDL) işlemlerini de destekler. ODBC sınıfları tarafından oluşan özel durumlar hakkında bilgi için bkz . CDBException.
CATCH ifadesi kapsamındaki özel durum nesnelerine erişebilirsiniz. AfxThrowDaoException genel işleviyle kendi kodunuzdan nesneler de oluşturabilirsinizCDaoException
.
MFC'de, tüm DAO hataları türünde CDaoException
özel durumlar olarak ifade edilir. Bu tür bir özel durum yakaladığınızda, veritabanı altyapısının Errors koleksiyonunda depolanan tüm DAO hata nesnelerinden bilgi almak için üye işlevlerini kullanabilirsiniz CDaoException
. Her hata oluştuğunda, hatalar koleksiyonuna bir veya daha fazla hata nesnesi yerleştirilir. (Normalde koleksiyon yalnızca bir hata nesnesi içerir; ODBC veri kaynağı kullanıyorsanız birden çok hata nesnesi alma olasılığınız daha yüksektir.) Başka bir DAO işlemi hata oluşturduğunda Errors koleksiyonu temizlenir ve yeni hata nesnesi Errors koleksiyonuna yerleştirilir. Hata oluşturmayan DAO işlemlerinin Errors koleksiyonu üzerinde hiçbir etkisi yoktur.
DAO hata kodları için DAOERR.H dosyasına bakın. İlgili bilgiler için DAO Yardımı'ndaki "Yakalanabilir Veri Erişimi Hataları" konusuna bakın.
Genel olarak özel durum işleme veya nesneler hakkında CDaoException
daha fazla bilgi için Özel Durum İşleme (MFC) ve Özel Durumlar: Veritabanı Özel Durumları makalelerine bakın. İkinci makale, DAO'da özel durum işlemeyi gösteren örnek kod içerir.
CDaoException
Üstbilgi: afxdao.h
Bir CDaoException
nesne oluşturur.
CDaoException();
Normalde, kodu bir özel durum oluşturduğunda çerçeve özel durum nesneleri oluşturur. Nadiren açıkça bir özel durum nesnesi oluşturmanız gerekir. Kendi kodunuzdan bir CDaoException
oluşturmak istiyorsanız AfxThrowDaoException genel işlevini çağırın.
Ancak, MFC sınıflarının kapsüllediğiniz DAO arabirim işaretçileri aracılığıyla DAO'ya doğrudan çağrılar yapıyorsanız açıkça bir özel durum nesnesi oluşturmak isteyebilirsiniz. Bu durumda, DAO'dan hata bilgilerini almanız gerekebilir. Bir çalışma alanının Databases koleksiyonuna DAODatabases arabirimi aracılığıyla bir DAO yöntemi çağırdığınızda DAO'da bir hata oluştuğu nu varsayalım.
Nesne oluşturma
CDaoException
.Veritabanı altyapısının Errors koleksiyonunda kaç hata nesnesi olduğunu belirlemek için özel durum nesnesinin GetErrorCount üye işlevini çağırın. (ODBC veri kaynağı kullanmıyorsanız normalde yalnızca bir tane.)
Özel durum nesnesinin GetErrorInfo üye işlevini çağırarak özel durum nesnesi aracılığıyla koleksiyondaki dizine göre bir kerede belirli bir hata nesnesi alın. Özel durum nesnesini bir DAO hata nesnesi için ara sunucu olarak düşünün.
m_pErrorInfo veri üyesinde döndüren
GetErrorInfo
geçerli CDaoErrorInfo yapısını inceleyin. Üyeleri DAO hatası hakkında bilgi sağlar.ODBC veri kaynağı söz konusu olduğunda, daha fazla hata nesnesi için 3. ve 4. adımları gerektiği gibi yineleyin.
Yığında özel durum nesnesi oluşturduysanız, bitirdiğinizde işleciyle silin
delete
.
MFC DAO sınıflarındaki hataları işleme hakkında daha fazla bilgi için Özel Durumlar: Veritabanı Özel Durumları makalesine bakın.
Veritabanı altyapısının Errors koleksiyonundaki DAO hata nesnelerinin sayısını almak için bu üye işlevini çağırın.
short GetErrorCount();
Veritabanı altyapısının Errors koleksiyonundaki DAO hata nesnelerinin sayısı.
Bu bilgiler, koleksiyondaki bir veya daha fazla DAO hata nesnesinin her birini almak için Errors koleksiyonunda döngü yapmak için kullanışlıdır. Dizine veya DAO hata numarasına göre bir hata nesnesi almak için GetErrorInfo üye işlevini çağırın.
Not
Normalde Errors koleksiyonunda yalnızca bir hata nesnesi vardır. Ancak bir ODBC veri kaynağıyla çalışıyorsanız birden fazla olabilir.
Errors koleksiyonundaki belirli bir hata nesnesiyle ilgili hata bilgilerini döndürür.
void GetErrorInfo(int nIndex);
nIndex
Dizine göre arama için veritabanı altyapısının Errors koleksiyonundaki hata bilgilerinin dizini.
Özel durum hakkında aşağıdaki tür bilgileri almak için bu üye işlevini çağırın:
Hata kodu
Source
Açıklama
Yardım dosyası
Yardım bağlamı
GetErrorInfo
bilgileri özel durum nesnesinin m_pErrorInfo
veri üyesinde depolar. Döndürülen bilgilerin kısa bir açıklaması için bkz . m_pErrorInfo. MFC tarafından oluşturulmuş bir tür CDaoException
özel durumu yakalarsanız, m_pErrorInfo
üye zaten doldurulur. DAO'yu doğrudan çağırmayı seçerseniz, doldurmak m_pErrorInfo
için özel durum nesnesinin GetErrorInfo
üye işlevini kendiniz çağırmanız gerekir. Daha ayrıntılı bir açıklama için bkz . CDaoErrorInfo yapısı.
DAO özel durumları ve örnek kod hakkında bilgi için Özel Durumlar: Veritabanı Özel Durumları makalesine bakın.
MFC genişletilmiş hata kodunu içerir.
Bu kod, MFC DAO sınıflarının belirli bir bileşeninin hatalı olduğu durumlarda sağlanır.
Olası değerler şunlardır:
NO_AFX_DAO_ERROR En son işlem MFC genişletilmiş hatasına neden olmadı. Ancak, işlem DAO veya OLE'den başka hatalar da üretebilirdi, bu nedenle m_pErrorInfo ve muhtemelen m_scode denetlemeniz gerekir.
AFX_DAO_ERROR_ENGINE_INITIALIZATION MFC, Microsoft Jet veritabanı altyapısını başlatamadı. OLE başlatılamadı veya DAO veritabanı altyapısı nesnesinin bir örneğini oluşturmak mümkün olmayabilir. Bu sorunlar genellikle DAO veya OLE'nin hatalı yüklenmesini önerir.
AFX_DAO_ERROR_DFX_BIND DAO kayıt alanı değişimi (DFX) işlev çağrısında kullanılan bir adres yok veya geçersiz (adres verileri bağlamak için kullanılmadı). DFX çağrısında hatalı bir adres geçirmiş olabilirsiniz veya DFX işlemleri arasında adres geçersiz hale gelmiş olabilir.
AFX_DAO_ERROR_OBJECT_NOT_OPEN Açık durumda olmayan bir sorgu tanımına veya tabledef nesnesine dayalı bir kayıt kümesini açmayı denediniz.
GetErrorInfo çağırarak en son aldığınız DAO hata nesnesi hakkında bilgi sağlayan bir CDaoErrorInfo
yapı işaretçisi içerir.
Bu nesne aşağıdaki bilgileri içerir:
CDaoErrorInfo üyesi | Bilgiler | Anlamı |
---|---|---|
m_lErrorCode |
Hata Kodu | DAO hata kodu |
m_strSource |
Kaynak | Hatayı ilk oluşturan nesnenin veya uygulamanın adı |
m_strDescription |
Açıklama | Hatayla ilişkili açıklayıcı bir dize |
m_strHelpFile |
Yardım Dosyası | Kullanıcının sorunla ilgili bilgi alabildiği bir Windows Yardım dosyasının yolu |
m_lHelpContext |
Yardım Bağlamı | DAO Yardım dosyasındaki bir konunun bağlam kimliği |
nesnesinde CDaoErrorInfo
yer alan bilgiler hakkında tüm ayrıntılar için bkz . CDaoErrorInfo yapısı.
Hatayı açıklayan türde SCODE
bir değer içerir.
Bu bir OLE kodudur. Neredeyse tüm durumlarda diğer CDaoException
veri üyelerinde daha belirli MFC veya DAO hata bilgileri olduğundan, bu değeri nadiren kullanmanız gerekir.
SCODE hakkında bilgi için Windows SDK'sında OLE Hata Kodlarının Yapısı konusuna bakın. SCODE veri türü HRESULT veri türüyle eşlenir.