Bagikan melalui


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 Koneksi ivity (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 Koneksi ivity (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

CObject

CException

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. CDBExceptionUntuk , anggota ini akan berisi salah satu nilai berikut:

  • AFX_SQL_ERROR_API_CONFORMANCE Driver untuk CDatabase::OpenEx panggilan atau CDatabase::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 berdasarkan GetDefaultConnect 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 atau CByteArray jenis data, lihat nMaxLength 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 panggilan CRecordset::AddNew sebelumnya atau CRecordset::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 atau Delete 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 atau Delete, 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 hanya boleh terjadi ketika pustaka kursor ODBC ODBC ODBC.DLL tidak ada.)

  • AFX_SQL_ERROR_SQL_CONFORMANCE Driver untuk panggilan CDatabase::OpenEx atau CDatabase::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 di m_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 SQLErrorODBC .

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 SQLErrorODBC . 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"

Baca juga

Kelas CException
Bagan Hierarki
Kelas CDatabase
Kelas CRecordset
Kelas CFieldExchange
CRecordset::Update
CRecordset::D elete
Kelas CException