freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

vc操作數(shù)據(jù)庫簡介(編輯修改稿)

2024-10-10 16:48 本頁面
 

【文章內(nèi)容簡介】 大容量交換的方式( Bulk RFX)時,RFX機(jī)制將在數(shù)據(jù)交換中起作用。 如果在 CRecordset派生類中實(shí)現(xiàn)了 Bulk RFX 交換方式,那么在數(shù)據(jù)交換的時候,將使用 Bulk RFX 機(jī)制交換數(shù)據(jù)。 RFX 和對話框的數(shù)據(jù)交換 (DDX)類似。在視圖和數(shù)據(jù)源之間自動交換數(shù)據(jù),可能還要多次調(diào)用 DoFieldExchange 函數(shù),因?yàn)橐淮谓粨Q的數(shù)據(jù)可能不止一個,同時它也是應(yīng)用程序框架和 ODBC 交流的媒介。 RFX 機(jī)制能夠安全的通過調(diào)用 (例如 ODBC 函數(shù) SQLBindCol)來保存用戶的工作。 RFX機(jī)制對于用戶來說大部分是透明的。如果使用 AppWizared或是 ClassWizard來生成一個記錄集, RFX 機(jī)制就自動加入應(yīng)用程序框架中去了。用戶的記錄集類必須是從CRecordset類派生出來的。用 ClassWizard派生一個記錄集類的對象,還可以加入其它父類。同時還可以用 ClassWizard 來 將視圖中的控件的中的變量和數(shù)據(jù)庫中的數(shù)據(jù)表的行聯(lián)系起來。 有些時候用戶需要自己加入一些 RFX代碼,如: ? 使用帶參數(shù)的查詢。 ? 完成數(shù)據(jù)庫中表與表的連接 ? 動態(tài)綁定數(shù)據(jù)列 下面就是上面我們所作的 DBView工程中 AppWizard說加入的 RFX代碼: void CDBViewSet::DoFieldExchange(CFieldExchange* pFX) { //{{AFX_FIELD_MAP(CDBViewSet) pFXSetFieldType(CFieldExchange::outputColumn)。 RFX_Text(pFX, _T([au_id]), m_au_id)。 RFX_Text(pFX, _T([au_lname]), m_au_lname)。 RFX_Text(pFX, _T([au_fname]), m_au_fname)。 RFX_Text(pFX, _T([phone]), m_phone)。 RFX_Text(pFX, _T([address]), m_address)。 RFX_Text(pFX, _T([city]), m_city)。 RFX_Text(pFX, _T([state]), m_state)。 RFX_Text(pFX, _T([zip]), m_zip)。 RFX_Bool(pFX, _T([contract]), m_contract)。 //}}AFX_FIELD_MAP } 函數(shù) DoFieldExchange 是 RFX 機(jī)制的中樞,任何時候應(yīng)用框架需要從數(shù)據(jù)源到記錄集或是從記錄集到數(shù)據(jù)源,都要調(diào)用 DoFieldExchange 函數(shù)。 RFX 機(jī)制將程序員從繁瑣的下層編程中解脫出來,自動完成大部分的數(shù)據(jù)交換工作。 下面是 CRecordset派生類的頭文件,其中關(guān)于 RFX機(jī)制的部分已經(jīng)用粗體顯示: class CDBViewSet : public CRecordset { public: CDBViewSet(CDatabase* pDatabase = NULL)。 DECLARE_DYNAMIC(CDBViewSet) // Field/Param Data //{{AFX_FIELD(CDBViewSet, CRecordset) CString m_au_id。 CString m_au_lname。 CString m_au_fname。 CString m_phone。 CString m_address。 CString m_city。 CString m_state。 CString m_zip。 BOOL m_contract。 //}}AFX_FIELD // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CDBViewSet) public: virtual CString GetDefaultConnect()。 // Default connection string virtual CString GetDefaultSQL()。 // default SQL for Recordset virtual void DoFieldExchange(CFieldExchange* pFX)。 // RFX support //}}AFX_VIRTUAL // Implementation ifdef _DEBUG virtual void AssertValid() const。 virtual void Dump(CDumpContextamp。 dc) const。 endif }。 這個頭文件主要是定義了記錄集中的數(shù)據(jù)成員變量。讀者可以在 //{AFX_FIELD 之間看見。 CDatabase類 這個類的頭文件是 。 CDatabase 對象是用來連接一個數(shù)據(jù)源的。通過這個類的對象你可以操縱數(shù)據(jù)源。一個數(shù)據(jù)源是一個 DBMS 中的活動對象。例如: Microsoft SQL Server, Microsoft Access, Borland174。 dBASE174。, and xBASE。你在你的應(yīng)用程序中可以有一個或是多個 CDatabase對象 。 為了可以使用 CDatabase 對象,需要調(diào)用構(gòu)造函數(shù),并調(diào)用 OpenEx或是 Open 函數(shù) ,這將會打開一個連接。當(dāng)構(gòu)造一個 CDatabase類完成后 ,可以向你的 CRecordset類的對象傳遞這個 CDatabase類的指針。連接數(shù)據(jù)源結(jié)束時,必須用 Close函數(shù)關(guān)閉這個對象。 下面將介紹 CDatabase類的成員函數(shù)以及成員變量: 1. CDatabase::m_hdbc 這個成員變量保留一個指向一個 ODBC的數(shù)據(jù)源連接的句柄。通常不需用戶要直接操作這個變量。相反的,應(yīng)用程序框架會在用戶調(diào)用 Open 函數(shù)或是 OpenEx函數(shù)的時候,自動填寫這個變量。 2. CDatabase::CDatabase CDatabase( )。 這是 CDatabase 類的構(gòu)造函 數(shù),在構(gòu)造完后,用戶可以調(diào)用 Open 函數(shù)或是 OpenEx函數(shù),這個函數(shù)最好是在文檔類中調(diào)用,這樣會很方便。 3. CDatabase::Open virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC?!? BOOL bUseCursorLib = TRUE )。 throw( CDBException, CMemoryException )。 調(diào)用函數(shù) Open 的時候一般是和 throw 關(guān)鍵詞一起使用的。調(diào)用成功的話,會返回非零值,否則返回零值,并且會彈出一個出錯信息對話框,按下 Cancel 鍵來取消連接。也可以用 OK鍵來再次連接。 它的參數(shù)說明如下: ? lpszDSN:用來設(shè)定一個數(shù)據(jù)源的名字,這個名字必須是在 ODBC的控制臺中登記的,如果在參數(shù) lpszConnect 已經(jīng)有了一個 DSN值的話,這個參數(shù)可以設(shè)為 NULL。 ? bExclusive:必須是 FALSE值,因?yàn)楝F(xiàn)在數(shù)據(jù)源的打開方式是共享的,所以必須是FALSE。 ? bReadOnly:為真時, 數(shù)據(jù)源將以只讀的方式讀出,否則就是可以修改數(shù)據(jù)源的。 ? pszConnect:用來描述一個連接的字符串,可能包括一個數(shù)據(jù)源的名字,或是用戶的 ID,或是管理員的 ID和密碼。 ? bUseCursorLib:為真時,加載 ODBC的 Cursor Library DLL文件。否則,不加載。 調(diào)用這個函數(shù)就是為了初始化一個 CDatabase 對象。但是推薦使用 OpenEx函數(shù)來打開一個數(shù)據(jù)源,因?yàn)?OpenEx函數(shù)會更加有效。 4. CDatabase::OpenEx virtual BOOL OpenEx( LPCTSTR lpszConnectString, DWORD dwOptions = 0 ); throw( CDBException, CMemoryException ); 如果一個連接成功的話,就會返回一個非零值。如果在用戶選擇 Cancel按鈕來取消連接的時候,會返回一個零值。 這個函數(shù)的參數(shù)說明如下: ? lpszConnectString:用來描述一個 ODBC連接,是一個字符串。是包含一個 ODBC數(shù)據(jù)源名字,或者還有一個用戶 ID,或者還有密碼的字符串。例如:DSN=SQLServer_Source。UID=SA。PWD=abc123。 ? dwOptions:用來描敘數(shù)據(jù)源打開方式。它可以是下面幾種方式的組合: DwOptions 說明 CDatabase::openExclusive 現(xiàn)在的 VC版本不支持 CDatabase::openReadOnly 以只讀的方式讀出 CDatabase::useCursorLib 加載 ODBC Cursor Library DLL CDatabase::noOdbcDialog 不出現(xiàn) ODBC 連接對話框 CDatabase::forceOdbcDialog 總要出現(xiàn) ODBC 連接對話框 如果參數(shù) lpszConnectString的信息不夠完全,系統(tǒng)會從 ODBC對話框來得到相應(yīng)的信息。所以最好將 CDatabase::forceOdbcDialog 選中。推薦使用 OpenEx 函數(shù)來打開一個數(shù)據(jù)源。 5. CDatabase::Close virtual void Close( )。 關(guān)閉一個 CDatabase關(guān)聯(lián)的數(shù)據(jù)源時,要調(diào)用函數(shù) Close。不過在調(diào)用 Close函數(shù)之前,要保證已經(jīng)關(guān)閉了對應(yīng)的 Crecoredset對象。 6. CDatabase::ExecuteSQL void ExecuteSQL( LPCSTR lpszSQL )。 throw( CDBException )。 參數(shù) lpszSQL 是一個指向一句合法的 SQL 語句的字符指針。你可以用這個函數(shù)直接執(zhí)行語句 SQL語句。 7. CDatabase::CanTransact BOOL CanTransact( ) const。 用來判斷數(shù)據(jù)源是否支持事務(wù)處理。要是支持,返回值為非零值,否則為零值。 8. CDatabase::SetLoginTimeout void SetLoginTimeout( DWORD dwSeconds )。 用來設(shè)置連接時間,參數(shù) dwSeconds是連接時間,單位為秒,要是超時,就算失敗。 9. CDatabase::GetConnect const CStringamp。 GetConnect( ) const。 用來得到當(dāng)前的對象所連接的數(shù)據(jù)源的 ODBC連接名字,返回值就是一個指向 ODBC連接名字的字符串指針。 10. CDatabase::Rollback BOOL Rollback( )。 如果事務(wù)執(zhí)行被成功的翻轉(zhuǎn)回原來狀態(tài),那么返回值非零值,否則返回零值。所謂事務(wù) 就是數(shù)據(jù)庫中一個數(shù)據(jù)處理過程。因?yàn)閿?shù)據(jù)庫往往是多個人使用的,并且每一次處理過程,并不是一步完成的。可能在完成某個處理動作的時候,突然出現(xiàn)中斷,如斷電,那么數(shù)據(jù)是否算修改了呢?所以數(shù)據(jù)庫中定義了一種事件,稱為事務(wù),就是一個處理動作。只有在一個事務(wù)完成并提交給數(shù)據(jù)庫后,修改才能生效。要是沒有生效,可以翻轉(zhuǎn)回原來的狀態(tài)重新執(zhí)行,或是翻回去后執(zhí)行其它的事務(wù)。 11. CDatabase::GetDatabaseName CString GetDatabaseName( ) const。 將返回當(dāng)前所連接的數(shù)據(jù)源的名字 ,這個名字并不一定是在 ODBC 控制臺登記的名字,這取決于不同的 ODBC驅(qū)動。 12. CDatabase::IsOpen BOOL IsOpen( ) const。 用來判斷當(dāng)前的對象是否連接著數(shù)據(jù)源,要是的話,返回值為非零值,沒有連接的時候,返回值為零值。 13. CDatabase::CanUpdate BOOL CanUpdate( ) const。 用來判斷數(shù)據(jù)源是否可以修改,要是可以修改,就返回非零值,要是數(shù)據(jù)源是只讀的,返回零值。 14. CDatabase::BeginTrans BOOL BeginTrans( )。 開始一個事務(wù)的操作,要是成功啟動了一個對于當(dāng)前連接的數(shù)據(jù)源的事務(wù),函數(shù)將返回非零值,否則返回零值。 15. CDatabase::CommitTrans BOOL CommitTrans( )。 提交一個數(shù)據(jù)庫事務(wù),要是這個事務(wù)被數(shù)據(jù)庫確認(rèn)后,函數(shù)將返回非零值,要是數(shù)據(jù)庫沒有確認(rèn)這個事務(wù),將返回零值。 由于篇幅的原因,不能也沒有必要將所有成員函數(shù)列出。要是讀者用到的話,請翻閱MSDN 或是相應(yīng)的技術(shù)文檔。也請讀者最好自己自學(xué)一下那些沒有列出的成員函數(shù),以便提高自己的數(shù)據(jù)庫編程水平。 CRecordset類 這個類的頭文件為 。 CRecordset 類用來表示從數(shù)據(jù)源讀取出來的
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1