CDBException Sınıfı
Veritabanı sınıflarından kaynaklanan bir özel durum koşulunu temsil eder.
Sözdizimi
class CDBException : public CException
Üyeler
Ortak Veri Üyeleri
Veri Akışı Adı | Açıklama |
---|---|
CDBException::m_nRetCode | RETCODE türünde bir Açık Veritabanı Bağlantısı (ODBC) dönüş kodu içerir. |
CDBException::m_strError | Alfasayısal terimlerde hatayı açıklayan bir dize içerir. |
CDBException::m_strStateNativeOrigin | ODBC tarafından döndürülen hata kodları açısından hatayı açıklayan bir dize içerir. |
Açıklamalar
sınıfı, özel durumun nedenini belirlemek veya özel durumu açıklayan bir kısa mesaj görüntülemek için kullanabileceğiniz iki genel veri üyesi içerir. CDBException
nesneleri, veritabanı sınıflarının üye işlevleri tarafından oluşturulur ve oluşturulur.
Not
Bu sınıf, MFC'nin Açık Veritabanı Bağlantısı (ODBC) sınıflarından biridir. Bunun yerine daha yeni Veri Erişim Nesneleri (DAO) sınıflarını kullanıyorsanız, bunun yerine CDaoException kullanın. Tüm DAO sınıf adlarında ön ek olarak "CDao" bulunur. Daha fazla bilgi için Genel Bakış: Veritabanı Programlama makalesine bakın.
Özel durumlar, veri kaynağı veya ağ G/Ç hataları gibi programın denetimi dışındaki koşulları içeren anormal yürütme durumlarıdır. Programınızı yürütürken normal seyrinde görmeyi bekleyebileceğiniz hatalar genellikle özel durum olarak kabul edilmez.
Bu nesnelere bir CATCH ifadesi kapsamında erişebilirsiniz. Genel işleviyle AfxThrowDBException
kendi kodunuzdan nesneler de oluşturabilirsinizCDBException
.
Genel olarak özel durum işleme veya nesneler hakkında CDBException
daha fazla bilgi için Özel Durum İşleme (MFC) ve Özel Durumlar: Veritabanı Özel Durumları makalelerine bakın.
Devralma Hiyerarşisi
CDBException
Gereksinimler
Üst bilgi: afxdb.h
CDBException::m_nRetCode
BIR ODBC uygulama programlama arabirimi (API) işlevi tarafından döndürülen RETCODE türünde bir ODBC hata kodu içerir.
Açıklamalar
Bu tür ODBC tarafından tanımlanan SQL ön ekli kodları ve veritabanı sınıfları tarafından tanımlanan AFX_SQL ön ekli kodları içerir. için CDBException
, bu üye aşağıdaki değerlerden birini içerir:
AFX_SQL_ERROR_API_CONFORMANCE Veya
CDatabase::OpenEx
CDatabase::Open
çağrısının sürücüsü gerekli ODBC API Uyumluluğu düzeyi 1 (SQL_OAC_LEVEL1) ile uyumlu değil.AFX_SQL_ERROR_CONNECT_FAIL Veri kaynağına bağlantı başarısız oldu. Kayıt kümesi oluşturucunuza bir NULL
CDatabase
işaretçisi geçirdiniz ve ardından başarısız olan bir bağlantıGetDefaultConnect
oluşturma girişiminde bulundunuz.AFX_SQL_ERROR_DATA_TRUNCATED Depolama sağladığınız veriden daha fazla veri istediniz. veya veri türleri için sağlanan veri depolama alanını artırma hakkında bilgi için
CString
" Makrolar ve Geneller" altındaki RFX_Text ve RFX_Binary bağımsız değişkenine bakınnMaxLength
.CByteArray
AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED Dinamik küme isteme çağrısı
CRecordset::Open
başarısız oldu. Dinamik kümeler sürücü tarafından desteklenmez.AFX_SQL_ERROR_EMPTY_COLUMN_LIST Bir tablo açmayı denediniz (veya verdikleriniz yordam çağrısı veya SELECT deyimi olarak tanımlanamadı) ancak geçersiz kılmanızda
DoFieldExchange
kayıt alanı değişimi (RFX) işlev çağrılarında tanımlanmış sütun yok.AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH Geçersiz kılmanızdaki
DoFieldExchange
bir RFX işlevinin türü kayıt kümesindeki sütun veri türüyle uyumlu değil.AFX_SQL_ERROR_ILLEGAL_MODE Daha önce veya çağrısı yapmadan aradınız
CRecordset::Update
CRecordset::AddNew
.CRecordset::Edit
AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED ODBC sürücünüz kilitlemeyi desteklemediğinden güncelleştirme için kayıtları kilitleme isteğiniz karşılanamadı.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED Benzersiz anahtarı olmayan ve birden çok kaydı değiştiren bir tablo için veya
Delete
öğesini aradınızCRecordset::Update
.AFX_SQL_ERROR_NO_CURRENT_RECORD Daha önce silinmiş bir kaydı düzenlemeye veya silmeye çalıştınız. Silme işleminden sonra yeni bir geçerli kayda kaydırmanız gerekir.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES ODBC sürücünüz konumlanmış güncelleştirmeleri desteklemediğinden dinamik küme isteğiniz karşılanamadı.
AFX_SQL_ERROR_NO_ROWS_AFFECTED veya
Delete
öğesini çağırdınızCRecordset::Update
, ancak işlem başladığında kayıt artık bulunamadı.AFX_SQL_ERROR_ODBC_LOAD_FAILED ODBC.DLL yükleme girişimi başarısız oldu; Windows bu DLL'yi bulamadı veya yükleyemedi. Bu hata önemli.
AFX_SQL_ERROR_ODBC_V2_REQUIRED Düzey 2 uyumlu odbc sürücüsü gerektiğinden dinamik küme isteğiniz karşılanamadı.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY Veri kaynağı geriye doğru kaydırmayı desteklemediğinden kaydırma denemesi başarılı olmadı.
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED Anlık görüntü isteme çağrısı
CRecordset::Open
başarısız oldu. Anlık görüntüler sürücü tarafından desteklenmez. (Bu yalnızca ODBC imleç kitaplığı ODBCCURS.DLL mevcut olmadığında gerçekleşmelidir.)AFX_SQL_ERROR_SQL_CONFORMANCE Veya
CDatabase::OpenEx
CDatabase::Open
çağrısının sürücüsü gerekli "Minimum" (SQL_OSC_MINIMUM) ODBC SQL Uyumluluk düzeyine uymuyor.AFX_SQL_ERROR_SQL_NO_TOTAL ODBC sürücüsü bir
CLongBinary
veri değerinin toplam boyutunu belirtemedi. Genel bellek bloğu önceden ayrılmadığından işlem büyük olasılıkla başarısız oldu.AFX_SQL_ERROR_RECORDSET_READONLY Salt okunur bir kayıt kümesini güncelleştirmeye çalıştınız veya veri kaynağı salt okunur. Kayıt kümesi veya
CDatabase
ilişkili olduğu nesneyle hiçbir güncelleştirme işlemi gerçekleştirilemez.SQL_ERROR İşlevi başarısız oldu. ODBC işlevi
SQLError
tarafından döndürülen hata iletisi veri üyesindem_strError
depolanır.SQL_INVALID_HANDLE İşlevi geçersiz bir ortam tanıtıcısı, bağlantı tutamacı veya deyim tutamacı nedeniyle başarısız oldu. Bu, bir programlama hatası olduğunu gösterir. ODBC işlevinden
SQLError
ek bilgi yoktur.
SQL ön ekli kodlar ODBC tarafından tanımlanır. AFX ön ekli kodlar AFXDB'de tanımlanır. H, MFC\INCLUDE içinde bulunur.
CDBException::m_strError
Özel duruma neden olan hatayı açıklayan bir dize içerir.
Açıklamalar
Dize, alfasayısal terimlerde hatayı açıklar. Daha ayrıntılı bilgi ve örnek için bkz m_strStateNativeOrigin
. .
CDBException::m_strStateNativeOrigin
Özel duruma neden olan hatayı açıklayan bir dize içerir.
Açıklamalar
Dize, biçim kodlarının sırasıyla şu değerlerle değiştirildiği "State:%s,Native:%ld,Origin:%s" biçimindedir:
SQLSTATE, ODBC işlevinin
SQLError
szSqlState parametresinde döndürülen beş karakterlik hata kodunu içeren null olarak sonlandırılan bir dizedir. SQLSTATE değerleri, ODBC Programcı Başvurusu'nda Ek A, ODBC Hata Kodları'nda listelenir. Örnek: "S0022".Veri kaynağına özgü yerel hata kodu, işlevin pfNativeError parametresinde
SQLError
döndürülür. Örnek: 207.İşlevin szErrorMsg parametresinde
SQLError
döndürülen hata iletisi metni. Bu ileti birkaç köşeli ayraçlı addan oluşur. Kaynağından kullanıcıya bir hata geçirildiğinde, her ODBC bileşeni (veri kaynağı, sürücü, Sürücü Yöneticisi) kendi adını ekler. Bu bilgiler hatanın kaynağını belirlemeye yardımcı olur. Örnek: [Microsoft][ODBC SQL Server Sürücüsü][SQL Server]
Çerçeve, hata dizesini yorumlar ve bileşenlerini içine m_strStateNativeOrigin
yerleştirir; m_strStateNativeOrigin
birden fazla hata için bilgi içeriyorsa, hatalar yeni satırlarla ayrılır. Çerçeve, alfasayısal hata metnini içine m_strError
yerleştirir.
Bu dizeyi oluşturmak için kullanılan kodlar hakkında ek bilgi için ODBC Programcı Başvurusu'ndaki SQLError işlevine bakın.
Örnek
ODBC'den: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] Geçersiz sütun adı 'ColName'"
Içinde m_strStateNativeOrigin
: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]"
içinde m_strError
: "Geçersiz sütun adı 'ColName'"
Ayrıca bkz.
CException Sınıfı
Hiyerarşi Grafiği
CDatabase Sınıfı
CRecordset Sınıfı
CFieldExchange Sınıfı
CRecordset::Update
CRecordset::D elete
CException Sınıfı