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

正文內(nèi)容

vc操作數(shù)據(jù)庫簡介-wenkub

2022-09-15 16:48:40 本頁面
 

【正文】 后,我們可以不必關(guān)心底層的運(yùn)作,因?yàn)?MFC 自動(dòng)將它完成了。因此,讀者不要希望使用 ODBC 會(huì)使一個(gè)簡單的數(shù)據(jù)庫馬上變成一個(gè)標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫引擎。 應(yīng)用程序正是通過 ODBC 驅(qū)動(dòng)來保證應(yīng)用程序獨(dú)立于不同的 DBMS 系統(tǒng)。 ? ODBC database drivers:由一個(gè)或是多個(gè) DLL構(gòu)成,其中含有 ODBC API,這些DLL由其擁有者: DBMS調(diào)用。 ODBC是種接口,它是通過相應(yīng)的各個(gè)數(shù)據(jù)庫的 ODBC驅(qū)動(dòng)來訪問各種數(shù)據(jù)庫中的數(shù)據(jù)。 在 NT 或是 98/95下面的控制面板里面都一個(gè) ODBC數(shù)據(jù)源 (32位 )(如圖 151) 151 控制面板 ODBC 數(shù)據(jù)源控制臺(tái)就是 Windows 系統(tǒng)管理數(shù)據(jù)源的控制臺(tái),所有的數(shù)據(jù)庫驅(qū)動(dòng),以及數(shù)據(jù)源登記都要在此發(fā)布,并向系統(tǒng)發(fā)出請求。讀者在下面的學(xué)習(xí)中可以體會(huì)到這一點(diǎn)。 VC對數(shù)據(jù)庫的支持 VC 從 ,而且提供了多種方法,而我將重點(diǎn)介紹 ODBC的引用。現(xiàn)在的數(shù)據(jù)庫技術(shù)可以說是計(jì)算機(jī)技術(shù)的一個(gè)重要支柱,沒有數(shù)據(jù)庫的支持,現(xiàn)在的 Inter也無法運(yùn)行起來。數(shù)據(jù)庫軟件現(xiàn)在一般指那些數(shù)據(jù)庫管理軟件,就如 SQL ,現(xiàn)在的數(shù)據(jù)庫軟件有很多,都支持關(guān)系模型。 現(xiàn)行的數(shù)據(jù)庫模型主要有四種:層次模型,網(wǎng)狀模型,關(guān)系模型,面向?qū)ο竽P?。在看此章書之前,希望讀者能夠看一本關(guān)于數(shù)據(jù)庫系統(tǒng)的教程,并且能夠?qū)W習(xí)一下 MICROSOFT 的數(shù)據(jù)庫軟件 SQL 。自 60年代以來,它就一直活躍在數(shù)據(jù)處理的領(lǐng)域,至今經(jīng)有了很大的發(fā)展,已經(jīng)成為計(jì)算機(jī)技術(shù)的一個(gè)重要分支?;仡櫼幌虑叭说臄?shù)據(jù)管理,如最簡單的帳目管理,需要記在本子上,效率低,安全性能差。當(dāng)然不必深入研究,只要知道其中的一些概念就可以?,F(xiàn)在最流行的數(shù)據(jù)庫軟件都是關(guān)系模型,最有希望的模型就是面向?qū)ο竽P停?但是目前此技術(shù)還不很成熟。如: Oracle, SysBase等。而且對于數(shù)據(jù)庫前端的開發(fā)也是一個(gè)熱門項(xiàng)目。在 VC 中支持的 ODBC驅(qū)動(dòng)有: SQL Server, Microsoft Access, Microsoft FoxPro, Microsoft Excel, dBASE, Paradox,Microsoft Oracle ODBC, Text files Microsoft對數(shù)據(jù)庫的支持 Microsoft對于數(shù)據(jù)庫的支持是多方面的,例如大家都知道的 SQL SERVER產(chǎn)品。 ODBC介紹和引用 ODBC的英文全稱是 Open Database Connectivity interface,翻譯過來就是開放數(shù)據(jù)源接口。通過使用 ODBC API 和 MFC ODBC 類 , 你可以訪問任何數(shù)據(jù)資源,無論這個(gè)數(shù)據(jù)源是本地的,還是遠(yuǎn)處的。使用 ODBC,你能夠使自己的應(yīng)用程序獨(dú)立于數(shù)據(jù)庫的硬件環(huán)境, ODBC 提供的 API函數(shù)獨(dú)立于數(shù)據(jù)庫管理系統(tǒng)( DBMS- the source database management system) ODBC 是 Microsoft的 Windows系統(tǒng)下的數(shù)據(jù)庫服務(wù)的一部分。 ? ODBC Cursor Library: 這也是一個(gè)動(dòng)態(tài)連接庫文件 (),它是駐留在 ODBC驅(qū)動(dòng)管理器和翻閱數(shù)據(jù)的句柄之間。否則應(yīng)用程序需要直接和 DBMS 系統(tǒng)打交道,這將是很痛苦的事情,當(dāng)你的程序還要運(yùn)行于不同的DBMS 下的時(shí)候,你還要考慮兼容性。它只是一個(gè)橋梁,將訪問數(shù)據(jù)庫的鴻溝給掩蓋了,使得開發(fā)人員不必需要懂得太多的 DBMS的特征。一般 Windows 系統(tǒng)給出,驅(qū)動(dòng)和數(shù)據(jù)源由相應(yīng)的數(shù)據(jù)庫給出。然后按下按鈕添加,彈出一個(gè)如圖 154所示的對話框,在其中選擇驅(qū)動(dòng)程序?yàn)?SQL Server,然后單擊完成按鈕。關(guān) 于 SQL 的配置和安裝請讀者參看相應(yīng)的技術(shù)資料,但是在Windows98/95 下安裝 SQL 是較為簡單的,不必花費(fèi)很多的精力。這些連接都封裝到了 CDatabase類中,一旦一個(gè) CDatabase建立了一個(gè)對數(shù)據(jù)源的連接,你就可以完成對數(shù)據(jù)的讀取,修改,更新,以及處理。 要想正確使用 CDatabase 類,必須要在控制面板的 ODBC32 數(shù)據(jù)源控制臺(tái)里面正確登記。使用 ClassWizard或是 AppWizard都會(huì)自動(dòng)的創(chuàng)建到指定的數(shù)據(jù)源的連接,你需要重載 CRecordset類中的 GetDefaultSQL函數(shù)來返回使用的表的名字。 ? 在記錄集中移動(dòng)記錄指針 ? 增加、刪除和更新數(shù)據(jù)源 一旦不需要某個(gè)記錄集的相應(yīng)的 CRecordset對象的時(shí)候,就要將它釋放掉 ,交回其占用的系統(tǒng)資源。 現(xiàn)在來詳細(xì)討論一下數(shù)據(jù)庫編程中的文檔視圖的應(yīng)用: 1. 最小化的文檔支持: 在 AppWizard中有兩個(gè)選項(xiàng)來支持?jǐn)?shù)據(jù)庫的訪問,每種選擇都會(huì)產(chǎn)生一個(gè) CrecordView類的派生類和一個(gè)文檔類。同時(shí)我們又可以使用文檔的序列化的功能,例如用戶的特定信息。 Header files only Cview 類派生 同上 Database view without file support Crecordset 類派生 不支持序列化,但是用文檔放數(shù)據(jù) Database view with file support Crecordset 類派生 完全的序列化的支持 3. 什么時(shí)候可以不要文檔 作者的觀點(diǎn)是最好要文檔,但是有些時(shí)候沒有必要。 但是對于一些應(yīng)用程序來說文檔是沒有必要的,應(yīng)用程序操作的是數(shù)據(jù)源中的一條記錄,用戶只是與一條記錄打交道,這樣的話,文檔是多余的。當(dāng)然這樣的話,在編程調(diào)試的時(shí)候?qū)⑤^為麻煩一些。 SQL和 ODBC API 作者在這里并不是下結(jié)論說 SQL語句好還是 ODBC API好,因?yàn)檫@完全取決編程人員的喜好以及任務(wù)的需要,但是 SQL語句還是應(yīng)該知道的。一般的情況下,是可以定制RecordSet 的對象的 SQL 的語句的,已經(jīng)得到的特定記錄集,或者,也可以使用 Cdatabase的 ExcuteSQL函數(shù)直接執(zhí)行 SQL語句。一個(gè) CrecordView對象就是用一個(gè)視圖中的控件來顯示數(shù)據(jù)庫中的記錄。同樣的 CRecordView 類支持缺省的游標(biāo) (游指向當(dāng)前記錄的指針 )功能,能夠跳到記錄集頭,跳到記錄集末,或是記錄尾,或是向前移動(dòng)一個(gè),向后移動(dòng)一個(gè);同樣的,還留有一個(gè)接口用來更新數(shù)據(jù)源的數(shù)據(jù)。如果只是需要一個(gè)簡單的顯示,那用 AppWizard來生成一個(gè)數(shù)據(jù)庫視圖是最好的。讓用戶方便的在記錄集中移動(dòng)游標(biāo)。作者推薦使用 ID號(hào)來傳遞對話框模板信息。然后和 CRecordView 子類關(guān)聯(lián)的對話框模板上的控件的變量將會(huì)和相應(yīng)的記錄集的數(shù)據(jù)關(guān)聯(lián)起來。這個(gè)函數(shù)非常有用,可以在這個(gè)函數(shù)里面寫上自己的缺省的更新語句??梢栽诤瘮?shù)體中更新語句,自己處理在記錄集中移動(dòng)游標(biāo)的功能。IsOnLastRecord函數(shù)在調(diào)用了函數(shù) OnRecordLast后,或是 CRecordset::MoveLast函數(shù)被調(diào)用后,返回值將是不可靠的值。必須重載這個(gè)函數(shù),以便能夠構(gòu)造 CRecordset 的派生類或是得到一個(gè)其派生類的一個(gè)指針。 這樣的使用的目的是為了在函數(shù)調(diào)用失敗后給出一個(gè)出錯(cuò)信息。 對于 OnMove函數(shù)缺省的設(shè)置為:當(dāng)用戶在視圖中修改數(shù)據(jù)后, OnMove將用戶的修改反映到數(shù)據(jù)源中去,進(jìn)行數(shù)據(jù)源的修改。視圖將一直顯示最后一個(gè)記錄的數(shù)據(jù)。 下面舉例實(shí)現(xiàn)一個(gè)小小的數(shù) 據(jù)庫顯示程序: ? 在 File菜單中選擇 New命令,用 AppWizard來生成一個(gè)單文檔的 EXE工程,名字叫 DBView, ? 然后選中視圖文檔支持,然后在 AppWizard的第二步中選擇數(shù)據(jù)支持的時(shí)候選擇“ Database view without file support”,就如圖 158所示一樣。 1510 SQL登陸對話框 ? 選擇數(shù)據(jù)庫中的 (如圖 1511 所示)。程序的運(yùn)行的界面就如圖 1514所示,讀者可以按一下工具欄上的按鈕,看一看程序顯示的是不是數(shù)據(jù)庫中的數(shù)據(jù)。 這樣讀者就已經(jīng)做成了一個(gè)自己的一個(gè)數(shù)據(jù)庫前端應(yīng)用程序。 1514 顯示數(shù)據(jù)庫數(shù)據(jù)的前臺(tái)程序 RFX Record Field Exchange (RFX)就是支持剛才那個(gè)應(yīng)用程序的一個(gè)交換機(jī)制,請讀者試著習(xí)慣使用英文縮寫來代替一些東西,這在計(jì)算機(jī)技術(shù)交流過程中是很有效的。 RFX 和對話框的數(shù)據(jù)交換 (DDX)類似。如果使用 AppWizared或是 ClassWizard來生成一個(gè)記錄集, RFX 機(jī)制就自動(dòng)加入應(yīng)用程序框架中去了。 有些時(shí)候用戶需要自己加入一些 RFX代碼,如: ? 使用帶參數(shù)的查詢。 RFX_Text(pFX, _T([au_fname]), m_au_fname)。 RFX_Text(pFX, _T([state]), m_state)。 RFX 機(jī)制將程序員從繁瑣的下層編程中解脫出來,自動(dòng)完成大部分的數(shù)據(jù)交換工作。 CString m_au_fname。 CString m_state。 // Default connection string virtual CString GetDefaultSQL()。 dc) const。 CDatabase類 這個(gè)類的頭文件是 。例如: Microsoft SQL Server, Microsoft Access, Borland174。 為了可以使用 CDatabase 對象,需要調(diào)用構(gòu)造函數(shù),并調(diào)用 OpenEx或是 Open 函數(shù) ,這將會(huì)打開一個(gè)連接。通常不需用戶要直接操作這個(gè)變量。 3. CDatabase::Open virtual BOOL Open( LPCTSTR lpszDSN, BOOL bExclusive = FALSE, BOOL bReadOnly = FALSE, LPCTSTR lpszConnect = “ODBC。調(diào)用成功的話,會(huì)返回非零值,否則返回零值,并且會(huì)彈出一個(gè)出錯(cuò)信息對話框,按下 Cancel 鍵來取消連接。 ? bReadOnly:為真時(shí), 數(shù)據(jù)源將以只讀的方式讀出,否則就是可以修改數(shù)據(jù)源的。 調(diào)用這個(gè)函數(shù)就是為了初始化一個(gè) CDatabase 對象。 這個(gè)函數(shù)的參數(shù)說明如下: ? lpszConnectString:用來描述一個(gè) ODBC連接,是一個(gè)字符串。PWD=abc123。推薦使用 OpenEx 函數(shù)來打開一個(gè)數(shù)據(jù)源。 6. CDatabase::ExecuteSQL void ExecuteSQL( LPCSTR lpszSQL )。 7. CDatabase::CanTransact BOOL CanTransact( ) const。 用來設(shè)置連接時(shí)間,參數(shù) dwSeconds是連接時(shí)間,單位為秒,要是超時(shí),就算失敗。 10. CDatabase::Rollback BOOL Rollback( )??赡茉谕瓿赡硞€(gè)處理動(dòng)作的時(shí)候,突然出現(xiàn)中斷,如斷電,那么數(shù)據(jù)是否算修改了呢?所以數(shù)據(jù)庫中定義了一種事件,稱為事務(wù),就是一個(gè)處理動(dòng)作。 將返回當(dāng)前所連接的數(shù)據(jù)源的名字 ,這個(gè)名字并不一定是在 ODBC 控制臺(tái)登記的名字,這取決于不同的 ODBC驅(qū)動(dòng)。 用來判斷數(shù)據(jù)源是否可以修改,要是可以修改,就返回非零值,要是數(shù)據(jù)源是只讀的,返回零值。 提交一個(gè)數(shù)據(jù)庫事務(wù),要是這個(gè)事務(wù)被數(shù)據(jù)庫確認(rèn)后,函數(shù)將返回非零值,要是數(shù)據(jù)庫沒有確認(rèn)這個(gè)事務(wù),將返回零值。 CRecordset類 這個(gè)類的頭文件為 。一個(gè) snapshot是一個(gè)靜態(tài)的記錄集。 ? 修改記錄,設(shè)定鎖定狀態(tài)。 為了使用戶能夠使用記錄集,在打開一個(gè)數(shù)據(jù)源的時(shí)候,需要構(gòu)造一個(gè) Crecordset類。為了使自己的修改生效,要調(diào)用成員函數(shù) Requery 來使修改生效。但是在調(diào)用 Open函數(shù)之前,這個(gè)句柄是無效的。 5. CRecordset::m_strFilter 在你構(gòu)造了一個(gè) CRecordset類后,在調(diào)用 Open函數(shù)之前,使用這個(gè)變量來填寫一個(gè)Cstring的變量。 下面是 CRecordset的成員函數(shù): 1. CRecordset::CRecordset CRecordset( CDatabase* pDatabase = NULL); 參數(shù)為 CDatabase 類型的指針。在打開一個(gè)數(shù)據(jù)源成功后,返回非零值,否則返回零值。CRecordset::readOnly。 CRecordset::useBookmarks。 CRecordset::userAllocMultiRowBuffers 。 用來判斷打開的數(shù)據(jù)源是否可以加入一個(gè)新的記錄,如是可以,就返回非零值,否則返回零值。 用來判斷數(shù)據(jù)源 是否支持重新執(zhí)行查詢語句,要是支持,就返回非零值,否則返回零值。 判斷數(shù)據(jù)源是否支持事務(wù),要是支持,返回非零值,否則返回零值。 10. CRecordset::GetODBCFieldCount short GetODBCFieldCount( ) const; 用來得到記錄集中的 Field的個(gè)數(shù),返回值就是 Field的個(gè)數(shù)。 rStatus ) const。 用來得到一張表的名字,返回值就是指向表名的指針。 16. CRecordset::IsBOF BOOL IsBOF( ) const。 18 CRecordset::IsDeleted BOOL IsDeleted( ) const。 這個(gè)函數(shù)是用來加入
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1