Veritabanı Makroları ve Genel Öğeleri

Aşağıda listelenen makrolar ve genel ayarlar ODBC tabanlı veritabanı uygulamaları için geçerlidir. DAO tabanlı uygulamalarla kullanılmazlar.

MFC 4.2'nin öncesinde makrolar AFX_SQL_ASYNC ve AFX_SQL_SYNC zaman uyumsuz işlemlere diğer işlemlere zaman verme fırsatı verdi. MFC 4.2 sürümünden başlayarak, MFC ODBC sınıfları yalnızca zaman uyumlu işlemleri kullandığından bu makroların uygulanması değişti. Makro AFX_ODBC_CALL MFC 4.2'de yeniydi.

Veritabanı Makroları

Veri Akışı Adı Açıklama
AFX_ODBC_CALL döndüren SQL_STILL_EXECUTINGbir ODBC API işlevini çağırır. AFX_ODBC_CALL işlevi artık döndürene SQL_STILL_EXECUTINGkadar işlevini tekrar tekrar çağırır.
AFX_SQL_ASYNC AFX_ODBC_CALL çağrısı yapar.
AFX_SQL_SYNC döndürmeyen SQL_STILL_EXECUTINGbir ODBC API işlevini çağırır.

Veritabanı Genel Ayarları

Veri Akışı Adı Açıklama
AfxDbInitModule MFC'ye dinamik olarak bağlı normal bir MFC DLL için veritabanı desteği ekler.
AfxGetHENV MFC tarafından kullanılmakta olan ODBC ortamı için bir tanıtıcı alır. Bu tanıtıcıyı doğrudan ODBC çağrılarında kullanabilirsiniz.

AfxDbInitModule

MFC'ye dinamik olarak bağlı normal bir MFC DLL'sinden MFC veritabanı (veya DAO) desteği için, MFC veritabanı DLL'sini CWinApp::InitInstance başlatmak için normal MFC DLL'nizin işlevine bu işleve bir çağrı ekleyin.

Sözdizimi

void AFXAPI AfxDbInitModule( );

Açıklamalar

Bu çağrının, MFC veritabanı DLL'sine erişen herhangi bir temel sınıf çağrısından veya eklenen koddan önce gerçekleştiğinden emin olun. MFC veritabanı DLL'i bir MFC uzantısı DLL'dir; MFC uzantı DLL'sinin zincire CDynLinkLibrary bağlanabilmesi için, onu kullanacak olan her modül bağlamında bir CDynLinkLibrary nesne oluşturması gerekir. AfxDbInitModuleCDynLinkLibrary, normal MFC DLL'sinin nesne zincirine CDynLinkLibrary bağlanabilmesi için nesneyi normal MFC DLL'nizin bağlamında oluşturur.

Gereksinimler

Üst Bilgi:<afxdll_.h>

AFX_ODBC_CALL

döndürebilecek SQL_STILL_EXECUTINGherhangi bir ODBC API işlevini çağırmak için bu makrosunu kullanın.

AFX_ODBC_CALL(SQLFunc)

Parametreler

SQLFunc
ODBC API işlevi. ODBC API işlevleri hakkında daha fazla bilgi için bkz. Windows SDK.

Açıklamalar

AFX_ODBC_CALL işlevi artık döndürene SQL_STILL_EXECUTINGkadar işlevini tekrar tekrar çağırır.

çağırmadan AFX_ODBC_CALLönce RETCODE türünde bir değişken nRetCodebildirmeniz gerekir.

MFC ODBC sınıflarının artık yalnızca zaman uyumlu işleme kullandığını unutmayın. Zaman uyumsuz bir işlem gerçekleştirmek için ODBC API işlevini SQLSetConnectOptionçağırmanız gerekir. Daha fazla bilgi için Windows SDK'sında "İşlevleri Zaman Uyumsuz Olarak Yürütme" konusuna bakın.

Örnek

Bu örnek, tarafından strTableNameadlı tablodaki SQLColumns sütunların listesini döndüren ODBC API işlevini çağırmak için kullanırAFX_ODBC_CALL. İşleve parametre geçirmek için kayıt kümesi veri üyelerinin bildirimine nRetCode ve kullanımına dikkat edin. Örnekte ayrıca sınıfının bir üye işlevi olan ile Checkçağrısının sonuçlarının denetlenerek CRecordsetde gösterilir. değişken prs , başka bir yerde bildirilen bir CRecordset nesnenin işaretçisidir.

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"));
}

Gereksinimler

Üst bilgi: afxdb.h

AFX_SQL_ASYNC

Bu makronun uygulanması MFC 4.2'de değiştirildi.

AFX_SQL_ASYNC(prs, SQLFunc)

Parametreler

Prs
Bir nesnenin CRecordset veya nesnenin işaretçisi CDatabase . MFC 4.2 ile başlayarak, bu parametre değeri yoksayılır.

SQLFunc
ODBC API işlevi. ODBC API işlevleri hakkında daha fazla bilgi için bkz. Windows SDK.

Açıklamalar

AFX_SQL_ASYNCyalnızca makro AFX_ODBC_CALL çağırır ve prs parametresini yoksayar. MFC'nin 4.2 öncesi sürümlerinde, AFX_SQL_ASYNC döndürebilecek SQL_STILL_EXECUTINGODBC API işlevlerini çağırmak için kullanıldı. BIR ODBC API işlevi döndürseydi SQL_STILL_EXECUTINGçağrısı AFX_SQL_ASYNC prs->OnWaitForDataSourceyapar.

Not

MFC ODBC sınıfları artık yalnızca zaman uyumlu işlemeyi kullanıyor. Zaman uyumsuz bir işlem gerçekleştirmek için ODBC API işlevini SQLSetConnectOptionçağırmanız gerekir. Daha fazla bilgi için Windows SDK'sında "İşlevleri Zaman Uyumsuz Olarak Yürütme" konusuna bakın.

Gereksinimler

Üst bilgi afxdb.h

AFX_SQL_SYNC

Makro yalnızca AFX_SQL_SYNC işlevini SQLFuncçağırır.

AFX_SQL_SYNC(SQLFunc)

Parametreler

SQLFunc
ODBC API işlevi. Bu işlevler hakkında daha fazla bilgi için bkz. Windows SDK.

Açıklamalar

döndürmeyecek SQL_STILL_EXECUTINGODBC API işlevlerini çağırmak için bu makrosunu kullanın.

çağrısından AFX_SQL_SYNCönce RETCODE türünde bir değişken nRetCodebildirmeniz gerekir. Makro çağrısından sonra değerini nRetCode de kontrol edebilirsiniz.

uygulamasının AFX_SQL_SYNC MFC 4.2'de değiştirildiğini unutmayın. Sunucu durumunu denetlemeye artık gerek kalmadığından, AFX_SQL_SYNC öğesine bir değer nRetCodeatamanız yeterlidir. Örneğin, aramayı yapmak yerine

AFX_SQL_SYNC(::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
   &nValue, sizeof(nValue), &cbValue));

yalnızca ödevi yapabilirsiniz

nRetCode = ::SQLGetInfo(m_dbCust.m_hdbc, SQL_ODBC_SQL_CONFORMANCE,
   &nValue, sizeof(nValue), &cbValue);

Gereksinimler

Üst bilgi afxdb.h

AfxGetHENV

Döndürülen tanıtıcıyı doğrudan ODBC çağrılarında kullanabilirsiniz, ancak tanıtıcıyı kapatmamalı veya mevcut CDatabaseveya CRecordsettüretilmiş nesneler yok edildikten sonra tutamacın hala geçerli ve kullanılabilir olduğunu varsaymamalısınız.

HENV AFXAPI AfxGetHENV();

Dönüş Değeri

MFC tarafından kullanılmakta olan ODBC ortamının tanıtıcısı. CDatabase nesnesi yoksa ve kullanımda olan CRecordset nesnesi yoksa olabilirSQL_HENV_NULL.

Gereksinimler

Üst bilgi afxdb.h

Ayrıca bkz.

Makrolar ve Genel Ayarlar