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_EXECUTING bir ODBC API işlevini çağırır. AFX_ODBC_CALL işlevi artık döndürene SQL_STILL_EXECUTING kadar 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_EXECUTING bir 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. AfxDbInitModule
CDynLinkLibrary
, 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_EXECUTING
herhangi 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_EXECUTING
kadar işlevini tekrar tekrar çağırır.
çağırmadan AFX_ODBC_CALL
önce RETCODE türünde bir değişken nRetCode
bildirmeniz 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 strTableName
adlı 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 CRecordset
de 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_ASYNC
yalnı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_EXECUTING
ODBC 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->OnWaitForDataSource
yapar.
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_EXECUTING
ODBC 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 nRetCode
bildirmeniz 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 nRetCode
atamanı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 CDatabase
veya CRecordset
tü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