Aracılığıyla paylaş


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

Ad Tanım
CDBException::m_nRetCode RETCODE türünde bir Açık Veritabanı Bağlan ivity (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.

Dekont

Bu sınıf, MFC'nin Açık Veritabanı Bağlan ivity (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

Cobject

Cexception

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::OpenExCDatabase::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.

  • Veri kaynağına AFX_SQL_ERROR_CONNECT_FAIL Bağlan 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::UpdateCRecordset::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'yi 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 durum yalnızca ODBCCURS.DLL ODBCCURS.DLL imleç kitaplığı olmadığında gerçekleşmelidir.)

  • AFX_SQL_ERROR_SQL_CONFORMANCE Veya CDatabase::OpenExCDatabase::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 üyesinde m_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 SQLErrorek 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 SQLErrorszSqlState 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_strStateNativeOriginyerleş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_strErroryerleş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ı