Makro dan Global Database
Makro dan global yang tercantum di bawah ini berlaku untuk aplikasi database berbasis ODBC. Mereka tidak digunakan dengan aplikasi berbasis DAO.
Sebelum MFC 4.2, makro AFX_SQL_ASYNC
dan AFX_SQL_SYNC
memberikan operasi asinkron kesempatan untuk menghasilkan waktu ke proses lain. Dimulai dengan MFC 4.2, implementasi makro ini berubah karena kelas ODBC MFC hanya menggunakan operasi sinkron. Makro AFX_ODBC_CALL
baru di MFC 4.2.
Makro Database
Nama | Deskripsi |
---|---|
AFX_ODBC_CALL | Memanggil fungsi ODBC API yang mengembalikan SQL_STILL_EXECUTING . AFX_ODBC_CALL akan berulang kali memanggil fungsi sampai tidak lagi mengembalikan SQL_STILL_EXECUTING . |
AFX_SQL_ASYNC | Panggilan AFX_ODBC_CALL . |
AFX_SQL_SYNC | Memanggil fungsi ODBC API yang tidak mengembalikan SQL_STILL_EXECUTING . |
Database Globals
Nama | Deskripsi |
---|---|
AfxDbInitModule | Menambahkan dukungan database untuk DLL MFC reguler yang secara dinamis ditautkan ke MFC. |
AfxGetHENV | Mengambil handel ke lingkungan ODBC yang saat ini digunakan oleh MFC. Anda dapat menggunakan handel ini dalam panggilan ODBC langsung. |
AfxDbInitModule
Untuk dukungan database MFC (atau DAO) dari DLL MFC reguler yang secara dinamis ditautkan ke MFC, tambahkan panggilan ke fungsi ini dalam fungsi DLL CWinApp::InitInstance
MFC reguler Anda untuk menginisialisasi DLL database MFC.
Sintaks
void AFXAPI AfxDbInitModule( );
Keterangan
Pastikan panggilan ini terjadi sebelum panggilan kelas dasar atau kode tambahan apa pun yang mengakses DLL database MFC. DLL database MFC adalah DLL ekstensi MFC; agar DLL ekstensi MFC dapat dikabeli ke dalam CDynLinkLibrary
rantai, ia harus membuat CDynLinkLibrary
objek dalam konteks setiap modul yang akan menggunakannya. AfxDbInitModule
CDynLinkLibrary
membuat objek dalam konteks DLL MFC reguler Anda sehingga terkabel ke dalam CDynLinkLibrary
rantai objek DLL MFC reguler.
Persyaratan
Header:<afxdll_.h>
AFX_ODBC_CALL
Gunakan makro ini untuk memanggil fungsi API ODBC apa pun yang dapat mengembalikan SQL_STILL_EXECUTING
.
AFX_ODBC_CALL(SQLFunc)
Parameter
SQLFunc
Fungsi ODBC API. Untuk informasi selengkapnya tentang fungsi ODBC API, lihat Windows SDK.
Keterangan
AFX_ODBC_CALL
berulang kali memanggil fungsi sampai tidak lagi mengembalikan SQL_STILL_EXECUTING
.
Sebelum memanggil AFX_ODBC_CALL
, Anda harus mendeklarasikan variabel, nRetCode
, jenis RETCODE.
Perhatikan bahwa kelas ODBC MFC sekarang hanya menggunakan pemrosesan sinkron. Untuk melakukan operasi asinkron, Anda harus memanggil fungsi SQLSetConnectOption
ODBC API . Untuk informasi selengkapnya, lihat topik "Menjalankan Fungsi Secara Asinkron" di Windows SDK.
Contoh
Contoh ini menggunakan AFX_ODBC_CALL
untuk memanggil SQLColumns
fungsi ODBC API, yang mengembalikan daftar kolom dalam tabel bernama .strTableName
Perhatikan deklarasi nRetCode
dan penggunaan anggota data recordset untuk meneruskan parameter ke fungsi. Contoh ini juga mengilustrasikan memeriksa hasil panggilan dengan Check
, fungsi anggota kelas CRecordset
. Variabel prs
adalah penunjuk ke CRecordset
objek, dideklarasikan di tempat lain.
RETCODE nRetCode;
AFX_ODBC_CALL(::SQLColumns(prs->m_hstmt, (SQLTCHAR*)NULL, SQL_NTS, (SQLTCHAR*)NULL,
SQL_NTS, (SQLTCHAR*)strTableName.GetBuffer(), SQL_NTS, (SQLTCHAR*)NULL, SQL_NTS));
if (!prs->Check(nRetCode))
{
AfxThrowDBException(nRetCode, prs->m_pDatabase, prs->m_hstmt);
TRACE(_T("SQLColumns failed\n"));
}
Persyaratan
Header: afxdb.h
AFX_SQL_ASYNC
Implementasi makro ini berubah dalam MFC 4.2.
AFX_SQL_ASYNC(prs, SQLFunc)
Parameter
Prs
Penunjuk ke CRecordset
objek atau CDatabase
objek. Dimulai dengan MFC 4.2, nilai parameter ini diabaikan.
SQLFunc
Fungsi ODBC API. Untuk informasi selengkapnya tentang fungsi ODBC API, lihat Windows SDK.
Keterangan
AFX_SQL_ASYNC
cukup memanggil makro AFX_ODBC_CALL dan mengabaikan parameter prs . Dalam versi MFC sebelum 4.2, AFX_SQL_ASYNC
digunakan untuk memanggil fungsi ODBC API yang mungkin mengembalikan SQL_STILL_EXECUTING
. Jika fungsi ODBC API mengembalikan SQL_STILL_EXECUTING
, maka AFX_SQL_ASYNC
akan memanggil prs->OnWaitForDataSource
.
Catatan
Kelas MFC ODBC sekarang hanya menggunakan pemrosesan sinkron. Untuk melakukan operasi asinkron, Anda harus memanggil fungsi SQLSetConnectOption
ODBC API . Untuk informasi selengkapnya, lihat topik "Menjalankan Fungsi Secara Asinkron" di Windows SDK.
Persyaratan
Header afxdb.h
AFX_SQL_SYNC
AFX_SQL_SYNC
Makro hanya memanggil fungsi SQLFunc
.
AFX_SQL_SYNC(SQLFunc)
Parameter
SQLFunc
Fungsi ODBC API. Untuk informasi selengkapnya tentang fungsi-fungsi ini, lihat Windows SDK.
Keterangan
Gunakan makro ini untuk memanggil fungsi ODBC API yang tidak akan mengembalikan SQL_STILL_EXECUTING
.
Sebelum memanggil AFX_SQL_SYNC
, Anda harus mendeklarasikan variabel, nRetCode
, jenis RETCODE. Anda dapat memeriksa nilai nRetCode
setelah panggilan makro.
Perhatikan bahwa implementasi AFX_SQL_SYNC
perubahan dalam MFC 4.2. Karena memeriksa status server tidak lagi diperlukan, AFX_SQL_SYNC
cukup tetapkan nilai ke nRetCode
. Misalnya, alih-alih melakukan panggilan
AFX_SQL_SYNC(::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
&nValue, sizeof(nValue), &cbValue));
Anda cukup membuat penugasan
nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
&nValue, sizeof(nValue), &cbValue);
Persyaratan
Header afxdb.h
AfxGetHENV
Anda dapat menggunakan handel yang dikembalikan dalam panggilan ODBC langsung, tetapi Anda tidak boleh menutup handel atau mengasumsikan bahwa handel masih valid dan tersedia setelah objek yang ada CDatabase
- atau CRecordset
-turunan telah dihancurkan.
HENV AFXAPI AfxGetHENV();
Tampilkan Nilai
Handel ke lingkungan ODBC yang saat ini digunakan oleh MFC. Bisa jadi SQL_HENV_NULL
jika tidak ada objek CDatabase dan tidak ada objek CRecordset yang digunakan.
Persyaratan
Header afxdb.h
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk