Share via


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. AfxDbInitModuleCDynLinkLibrary 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 SQLSetConnectOptionODBC 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 SQLSetConnectOptionODBC 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

Makro dan Global