Kelas CDBException
Mewakili kondisi pengecualian yang timbul dari kelas database.
Sintaks
class CDBException : public CException
Anggota
Anggota Data Publik
Nama | Deskripsi |
---|---|
CDBException::m_nRetCode | Berisi kode pengembalian Open Database Connectivity (ODBC), jenis RETCODE. |
CDBException::m_strError | Berisi string yang menjelaskan kesalahan dalam istilah alfanumerik. |
CDBException::m_strStateNativeOrigin | Berisi string yang menjelaskan kesalahan dalam hal kode kesalahan yang dikembalikan oleh ODBC. |
Keterangan
Kelas ini mencakup dua anggota data publik yang dapat Anda gunakan untuk menentukan penyebab pengecualian atau menampilkan pesan teks yang menjelaskan pengecualian. CDBException
objek dibangun dan dilemparkan oleh fungsi anggota dari kelas database.
Catatan
Kelas ini adalah salah satu kelas Open Database Connectivity (ODBC) MFC. Jika Anda menggunakan kelas Objek Akses Data (DAO) yang lebih baru, gunakan CDaoException sebagai gantinya. Semua nama kelas DAO memiliki "CDao" sebagai awalan. Untuk informasi selengkapnya, lihat artikel Gambaran Umum: Pemrograman Database.
Pengecualian adalah kasus eksekusi abnormal yang melibatkan kondisi di luar kontrol program, seperti sumber data atau kesalahan I/O jaringan. Kesalahan yang mungkin Anda harapkan untuk dilihat dalam perjalanan normal menjalankan program Anda biasanya tidak dianggap sebagai pengecualian.
Anda dapat mengakses objek ini dalam cakupan ekspresi CATCH . Anda juga dapat melempar CDBException
objek dari kode Anda sendiri dengan AfxThrowDBException
fungsi global.
Untuk informasi selengkapnya tentang penanganan pengecualian secara umum, atau tentang CDBException
objek, lihat artikel Penanganan Pengecualian (MFC) dan Pengecualian: Pengecualian Database.
Hierarki Warisan
CDBException
Persyaratan
Header: afxdb.h
CDBException::m_nRetCode
Berisi kode kesalahan ODBC jenis RETCODE yang dikembalikan oleh fungsi antarmuka pemrograman aplikasi (API) ODBC.
Keterangan
Jenis ini mencakup kode awalan SQL yang ditentukan oleh ODBC dan kode awalan AFX_SQL yang ditentukan oleh kelas database. CDBException
Untuk , anggota ini akan berisi salah satu nilai berikut:
AFX_SQL_ERROR_API_CONFORMANCE Driver untuk
CDatabase::OpenEx
panggilan atauCDatabase::Open
tidak sesuai dengan ODBC API Conformance level 1 (SQL_OAC_LEVEL1) yang diperlukan.AFX_SQL_ERROR_CONNECT_FAIL Koneksi ke sumber data gagal. Anda meneruskan penunjuk NULL
CDatabase
ke konstruktor recordset Anda dan upaya berikutnya untuk membuat koneksi berdasarkanGetDefaultConnect
gagal.AFX_SQL_ERROR_DATA_TRUNCATED Anda meminta lebih banyak data daripada yang telah Anda sediakan penyimpanannya. Untuk informasi tentang meningkatkan penyimpanan data yang disediakan untuk
CString
atauCByteArray
jenis data, lihatnMaxLength
argumen untuk RFX_Text dan RFX_Binary di bawah "Makro dan Global."AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED Panggilan untuk
CRecordset::Open
meminta dynaset gagal. Dynasets tidak didukung oleh driver.AFX_SQL_ERROR_EMPTY_COLUMN_LIST Anda mencoba membuka tabel (atau apa yang Anda berikan tidak dapat diidentifikasi sebagai panggilan prosedur atau pernyataan SELECT ) tetapi tidak ada kolom yang diidentifikasi dalam panggilan fungsi pertukaran bidang rekaman (RFX) dalam penimpaan Anda
DoFieldExchange
.AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH Jenis fungsi RFX dalam penimpaan Anda
DoFieldExchange
tidak kompatibel dengan jenis data kolom dalam kumpulan rekaman.AFX_SQL_ERROR_ILLEGAL_MODE Anda menelepon
CRecordset::Update
tanpa panggilanCRecordset::AddNew
sebelumnya atauCRecordset::Edit
.AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED Permintaan Anda untuk mengunci rekaman untuk pembaruan tidak dapat dipenuhi karena driver ODBC Anda tidak mendukung penguncian.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED Anda memanggil
CRecordset::Update
atauDelete
untuk tabel tanpa kunci unik dan mengubah beberapa rekaman.AFX_SQL_ERROR_NO_CURRENT_RECORD Anda mencoba mengedit atau menghapus rekaman yang dihapus sebelumnya. Anda harus menggulir ke rekaman baru saat ini setelah penghapusan.
AFX_SQL_ERROR_NO_POSITIONED_UPDATES Permintaan Anda untuk dynaset tidak dapat dipenuhi karena driver ODBC Anda tidak mendukung pembaruan yang diposisikan.
AFX_SQL_ERROR_NO_ROWS_AFFECTED Anda menelepon
CRecordset::Update
atauDelete
, tetapi ketika operasi memulai rekaman tidak dapat lagi ditemukan.AFX_SQL_ERROR_ODBC_LOAD_FAILED Upaya untuk memuat ODBC.DLL gagal; Windows tidak dapat menemukan atau tidak dapat memuat DLL ini. Kesalahan ini berakibat fatal.
AFX_SQL_ERROR_ODBC_V2_REQUIRED Permintaan Anda untuk dynaset tidak dapat dipenuhi karena driver ODBC yang mematuhi Level 2 diperlukan.
AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY Upaya untuk menggulir tidak berhasil karena sumber data tidak mendukung pengguliran mundur.
AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED Panggilan untuk
CRecordset::Open
meminta rekam jepret gagal. Rekam jepret tidak didukung oleh driver. (Ini seharusnya hanya terjadi ketika pustaka kursor ODBC ODBCCURS.DLL tidak ada.)AFX_SQL_ERROR_SQL_CONFORMANCE Driver untuk panggilan
CDatabase::OpenEx
atauCDatabase::Open
tidak sesuai dengan tingkat Kesesuaian ODBC SQL yang diperlukan dari "Minimum" (SQL_OSC_MINIMUM).AFX_SQL_ERROR_SQL_NO_TOTAL Driver ODBC tidak dapat menentukan ukuran
CLongBinary
total nilai data. Operasi mungkin gagal karena blok memori global tidak dapat dialokasikan sebelumnya.AFX_SQL_ERROR_RECORDSET_READONLY Anda mencoba memperbarui kumpulan rekaman baca-saja, atau sumber data bersifat baca-saja. Tidak ada operasi pembaruan yang dapat dilakukan dengan kumpulan rekaman atau objek yang
CDatabase
terkait dengannya.Fungsi SQL_ERROR gagal. Pesan kesalahan yang dikembalikan oleh fungsi
SQLError
ODBC disimpan dim_strError
anggota data.SQL_INVALID_HANDLE Function gagal karena handel lingkungan, handel koneksi, atau handel pernyataan yang tidak valid. Ini menunjukkan kesalahan pemrograman. Tidak ada informasi tambahan yang tersedia dari fungsi
SQLError
ODBC .
Kode awalan SQL ditentukan oleh ODBC. Kode awalan AFX didefinisikan dalam AFXDB. H, ditemukan di MFC\INCLUDE.
CDBException::m_strError
Berisi string yang menjelaskan kesalahan yang menyebabkan pengecualian.
Keterangan
String menjelaskan kesalahan dalam istilah alfanumerik. Untuk informasi selengkapnya dan contohnya, lihat m_strStateNativeOrigin
.
CDBException::m_strStateNativeOrigin
Berisi string yang menjelaskan kesalahan yang menyebabkan pengecualian.
Keterangan
String adalah formulir "State:%s,Native:%ld,Origin:%s", di mana kode format, secara berurutan, digantikan oleh nilai yang menjelaskan:
SQLSTATE, string null-terminated yang berisi kode kesalahan lima karakter yang dikembalikan dalam parameter szSqlState dari fungsi
SQLError
ODBC . Nilai SQLSTATE tercantum dalam Lampiran A, Kode Kesalahan ODBC, di Referensi Programmer ODBC. Contoh: "S0022".Kode kesalahan asli, khusus untuk sumber data, dikembalikan dalam parameter pfNativeError fungsi
SQLError
. Contoh: 207.Teks pesan kesalahan dikembalikan dalam parameter szErrorMsg fungsi
SQLError
. Pesan ini terdiri dari beberapa nama yang dikurung. Karena kesalahan diteruskan dari sumbernya kepada pengguna, setiap komponen ODBC (sumber data, driver, Manajer Driver) menambahkan namanya sendiri. Informasi ini membantu menentukan asal kesalahan. Contoh: [Microsoft][ODBC SQL Server Driver][SQL Server]
Kerangka kerja menginterpretasikan string kesalahan dan memasukkan komponennya ke dalam m_strStateNativeOrigin
; jika m_strStateNativeOrigin
berisi informasi untuk lebih dari satu kesalahan, kesalahan dipisahkan oleh baris baru. Kerangka kerja menempatkan teks kesalahan alfanumerik ke dalam m_strError
.
Untuk informasi tambahan tentang kode yang digunakan untuk membuat string ini, lihat fungsi SQLError di Referensi Programmer ODBC.
Contoh
Dari ODBC: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] Nama kolom 'ColName' tidak valid"
Dalam m_strStateNativeOrigin
: "State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server]"
Dalam m_strError
: "Nama kolom 'ColName' tidak valid"
Lihat juga
Kelas CException
Bagan Hierarki
Kelas CDatabase
Kelas CRecordset
Kelas CFieldExchange
CRecordset::Update
CRecordset::D elete
Kelas CException