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

正文內(nèi)容

vc操作數(shù)據(jù)庫(kù)簡(jiǎn)介(更新版)

  

【正文】 。當(dāng)你沒(méi)有用 Bulk RFX 的時(shí)候, ClassWizad自動(dòng)填寫(xiě),當(dāng)然你也可以手動(dòng)填寫(xiě)。在調(diào)用 Open 函數(shù)從數(shù)據(jù)源中讀取數(shù)據(jù)后,可以 在 CRecordset的派生類(lèi)用它的成員函數(shù)來(lái)翻閱記錄和處理記錄。 為了能夠處理各種的記錄集,最好從類(lèi) CRecordset派生出一個(gè)子類(lèi)來(lái)。要是讀者用到的話(huà),請(qǐng)翻閱MSDN 或是相應(yīng)的技術(shù)文檔。 用來(lái)判斷當(dāng)前的對(duì)象是否連接著數(shù)據(jù)源,要是的話(huà),返回值為非零值,沒(méi)有連接的時(shí)候,返回值為零值。所謂事務(wù) 就是數(shù)據(jù)庫(kù)中一個(gè)數(shù)據(jù)處理過(guò)程。要是支持,返回值為非零值,否則為零值。 關(guān)閉一個(gè) CDatabase關(guān)聯(lián)的數(shù)據(jù)源時(shí),要調(diào)用函數(shù) Close。例如:DSN=SQLServer_Source。 ? bUseCursorLib:為真時(shí),加載 ODBC的 Cursor Library DLL文件。 throw( CDBException, CMemoryException )。連接數(shù)據(jù)源結(jié)束時(shí),必須用 Close函數(shù)關(guān)閉這個(gè)對(duì)象。通過(guò)這個(gè)類(lèi)的對(duì)象你可以操縱數(shù)據(jù)源。 // RFX support //}}AFX_VIRTUAL // Implementation ifdef _DEBUG virtual void AssertValid() const。 CString m_address。 RFX_Bool(pFX, _T([contract]), m_contract)。 RFX_Text(pFX, _T([au_id]), m_au_id)。 RFX 機(jī)制能夠安全的通過(guò)調(diào)用 (例如 ODBC 函數(shù) SQLBindCol)來(lái)保存用戶(hù)的工作。要是讀者所裝的SQL Pubs數(shù)據(jù)庫(kù)中的數(shù)據(jù)是很重要的話(huà),請(qǐng)備份一份,以免數(shù)據(jù)遭到破壞后,無(wú)法修復(fù)。 1512 對(duì)話(huà)框的設(shè)置 ? 用 ClassWizard來(lái)給相應(yīng)的 Edit Box來(lái)連接變量,注 意,在 Member variable name的下拉組合框中已經(jīng)有了相應(yīng)表中的字段 (如圖 1513 所示 ),只要選中就行了,請(qǐng)讀者按照上圖的說(shuō)明選擇好相應(yīng)的字段。 需要小心的是如果記錄集中沒(méi)有記錄,調(diào)用 OnMove函數(shù)會(huì)產(chǎn)生一個(gè)異常。 函數(shù)參數(shù) nIDMoveCommand是下面的幾個(gè)特定的值: ID_RECORD_FIRST 移動(dòng)到記錄集的第一個(gè)記錄 ID_RECORD_LAST 移動(dòng)到記錄集的最后一個(gè)記錄 ID_RECORD_NEXT 在記錄集中向后移動(dòng)一個(gè)記錄 ID_RECORD_PREV 在記錄集中向前移動(dòng)一個(gè)記錄 調(diào)用這個(gè)成員函數(shù)是為了在記錄集中移動(dòng)游標(biāo)的位置,并且將記錄顯示在視圖中的控件里面。否則就是一個(gè)空的指針。 調(diào)用這個(gè)函數(shù)就是為了判斷當(dāng)前的記錄是否是記錄集中最后的記錄。在子類(lèi)構(gòu)造函數(shù)里面,要有調(diào)用到父類(lèi)中的構(gòu)造函數(shù) CRecordView::CRecordView的語(yǔ)句,就如下面的例子一樣。使用 ClassWizard 生成一個(gè)數(shù)據(jù)庫(kù)的視圖類(lèi)( CRecordView)和一個(gè)數(shù)據(jù)庫(kù)的記錄集 的類(lèi)( CRecordset),將會(huì)在處理數(shù)據(jù)源的時(shí)候有更多的靈活性,可以對(duì)于同一個(gè)記錄集,用多個(gè)視圖來(lái)顯示。這個(gè)視圖是由對(duì)話(huà)框模板生成的。 MFC ODBC類(lèi)提供了同樣的靈活性,允許直接調(diào)用 ODBC API函數(shù),可以在程序中的任何地方調(diào)用這些函數(shù)。 有的時(shí)候需要多個(gè)視圖顯示一個(gè)數(shù)據(jù)源,這時(shí)就需要一個(gè)文檔類(lèi)來(lái)簡(jiǎn)單的記錄數(shù)據(jù)源的記錄,然后管理多個(gè)視圖。 2. AppWizard中關(guān)于文檔視圖的選項(xiàng) 使用 AppWizard建立一個(gè)應(yīng)用程序,可以通過(guò)一些選項(xiàng)來(lái)選擇最佳的文檔視圖支持。 MFC 的應(yīng)用程序大多是采用 /視圖文檔的結(jié)構(gòu),典型的結(jié)構(gòu)就是:視圖負(fù)責(zé)顯示數(shù)據(jù),文檔對(duì)象 (有多個(gè) )用來(lái)存取不同的數(shù)據(jù),同時(shí)視圖還負(fù)責(zé)和文檔的數(shù)據(jù)交換和更新。 選擇和處理記錄 在 SQL Server中你可以用 Sql語(yǔ)句,如 SELECT,從數(shù)據(jù)源中選取出一個(gè)記錄集,或是一些記錄集的集合。這樣讀者就不必將作者的數(shù)據(jù)庫(kù)文件再進(jìn)行一次拷貝, Pubs數(shù)據(jù)庫(kù)中的一切數(shù)據(jù)在不同的 SQL 。作者使用的是 SQL ,現(xiàn)在請(qǐng)讀者打開(kāi)控制面板 ,點(diǎn)擊 ODBC數(shù)據(jù)源( 32位),然后按下面的步驟去作: 建立 ODBC數(shù)據(jù)源 打開(kāi) ODBC控制臺(tái),然后選擇系統(tǒng) DSN,就如圖 153一樣。 有一點(diǎn)是很重要的,這就是: ODBC是用來(lái)釋放數(shù)據(jù)庫(kù)的能力的,而不是這些數(shù)據(jù)庫(kù)的補(bǔ)充。 ? ODBC Driver Manager:一個(gè)動(dòng)態(tài)庫(kù)文件 () 來(lái)加載 ODBC驅(qū)動(dòng),這個(gè) DLL是對(duì)你的應(yīng)用程序是透明的。而且現(xiàn)行的 數(shù)據(jù)庫(kù)軟件都有自己的 ODBC 驅(qū)動(dòng),接口都是標(biāo)準(zhǔn)的。 VC 在這方面做得非常好,有良好的數(shù)據(jù)庫(kù)支持。一個(gè)數(shù)據(jù)庫(kù)的組成往往有四個(gè)部分組成:硬件,軟件,數(shù)據(jù)和用戶(hù)。數(shù)據(jù)處理是個(gè)熱門(mén)話(huà)題,現(xiàn)行的數(shù)據(jù)處理方法有很多,可是限于篇幅,我們不能一一介紹。而現(xiàn)在只要有了數(shù)據(jù)支持,我們就可以非常方便的建立起自己的數(shù)據(jù)庫(kù),并進(jìn)行管理和操作。作者所用的 SQL ,這個(gè)模型的主要的特點(diǎn)就是用表格數(shù)據(jù)來(lái)表示實(shí)體和實(shí)體聯(lián)系的模型,就如 Word的表格,但是在數(shù)據(jù)庫(kù)中并不是簡(jiǎn)單的存儲(chǔ)一個(gè)表格。怎么作出一個(gè)友好的界面,以及效率高的工具,是每個(gè)數(shù)據(jù)庫(kù)前端開(kāi)發(fā)程序員的目標(biāo)。 ODBC接口是一個(gè)標(biāo)準(zhǔn)的,統(tǒng)一的接口,程序員可以通過(guò)它訪(fǎng)問(wèn)不同的數(shù)據(jù)源,而不必關(guān)心這個(gè)數(shù)據(jù)源是從那個(gè)數(shù)據(jù)庫(kù)軟件生成的。 它是由下面幾個(gè)部分構(gòu)成的: ? ODBC API :包含在一個(gè)動(dòng)態(tài)庫(kù)中的函數(shù)集合;一個(gè)錯(cuò)誤代碼的集合;一個(gè)標(biāo)準(zhǔn)的 SQL語(yǔ)句集合,用來(lái)調(diào)用 DBMS中的數(shù)據(jù)。這些 ODBC 驅(qū)動(dòng)做的事情,簡(jiǎn)單的一句話(huà)就是將應(yīng)用程序的調(diào)用翻譯為 DBMS系統(tǒng)能夠理解的命令。 如何訪(fǎng)問(wèn)數(shù)據(jù)庫(kù) 在運(yùn)行訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的前臺(tái)軟件之前,要在控制面板上的 ODBC數(shù)據(jù)源控制臺(tái)中登記一下。作者選擇 Pubs數(shù)據(jù)庫(kù)作為缺省數(shù)據(jù)庫(kù),是因?yàn)?SQL Pubs數(shù)據(jù)庫(kù)是一個(gè)公共模板數(shù)據(jù)庫(kù),只要裝了 SQL 。在同一個(gè)應(yīng)用程序中,你可以有多個(gè)數(shù)據(jù)源,相應(yīng)的對(duì)應(yīng)多個(gè) CDatabase對(duì)象,也可以使用多個(gè) CDatabase對(duì)象來(lái)連接同一個(gè)數(shù)據(jù)源。 文檔和視圖 文檔、視圖和數(shù)據(jù)庫(kù)有很密切的關(guān)系,它關(guān)系到程序的設(shè)計(jì)結(jié)構(gòu)。同樣的,在序列化的過(guò)程中,可以根據(jù)需要自己實(shí)現(xiàn)存取功能。應(yīng)該將它從應(yīng)用程序中刪除掉。 MFC封裝了大部分的 Windows API調(diào)用,但是同時(shí)也允許你直接調(diào)用 ODBC API 函數(shù)。這個(gè)視圖對(duì)象直接連接到一個(gè)數(shù)據(jù)源中的記錄集。 ClassWizard 能在開(kāi)發(fā)的過(guò)程中加入數(shù)據(jù)庫(kù)視圖類(lèi)的支持。 派生類(lèi)中要自己動(dòng)手實(shí)現(xiàn)子類(lèi)的初始化工作。 當(dāng)用戶(hù)操縱游標(biāo)移動(dòng)到記錄集的第一個(gè)記錄的時(shí)候,主框架窗口將把能移動(dòng)到第一條記錄和移動(dòng)到前一條的記錄的用戶(hù)接口關(guān)閉掉, 3. CRecordView::IsOnLastRecord BOOL IsOnLastRecord( ); 這個(gè)函數(shù)返回值是 個(gè)布爾值,如果當(dāng)前的記錄是記錄集中最后的記錄,就返回非零值,否則返回零值。 4. CRecordView::OnGetRecordset virtual CRecordset* OnGetRecordset( ) = 0; 這是一個(gè)虛函數(shù),它的返回值是一個(gè) CRecordset 類(lèi)型的指針,如果一個(gè) CRecordset的派生類(lèi)被成功構(gòu)造,就返回一個(gè)指向其派生類(lèi)的指針。 它的返回值是一個(gè)布爾值,如果移動(dòng)成功,返回非零值,否則就返回零值。如果已經(jīng)到了記錄集的最前面一個(gè)記錄,用戶(hù)仍然發(fā)出向前移動(dòng)的命令,視圖將只是顯示數(shù)據(jù)集里面的第一個(gè)記錄的數(shù)據(jù)。單擊 OK 1511 選擇數(shù)據(jù)表 ? 去掉 Printing And Pring Preview的風(fēng)格( step 4),然后保留其它的設(shè)置,生成一個(gè)工程,打開(kāi)資源文件的對(duì)話(huà)框模板,加入相應(yīng)的 Edit Box,如圖 1512所示。它還 是很簡(jiǎn)單的,并不能夠真的滿(mǎn)足我們的需求,所以我們將在其基礎(chǔ)上進(jìn)行些代碼修改。在視圖和數(shù)據(jù)源之間自動(dòng)交換數(shù)據(jù),可能還要多次調(diào)用 DoFieldExchange 函數(shù),因?yàn)橐淮谓粨Q的數(shù)據(jù)可能不止一個(gè),同時(shí)它也是應(yīng)用程序框架和 ODBC 交流的媒介。 ? 完成數(shù)據(jù)庫(kù)中表與表的連接 ? 動(dòng)態(tài)綁定數(shù)據(jù)列 下面就是上面我們所作的 DBView工程中 AppWizard說(shuō)加入的 RFX代碼: void CDBViewSet::DoFieldExchange(CFieldExchange* pFX) { //{{AFX_FIELD_MAP(CDBViewSet) pFXSetFieldType(CFieldExchange::outputColumn)。 RFX_Text(pFX, _T([zip]), m_zip)。 CString m_phone。 // default SQL for Recordset virtual void DoFieldExchange(CFieldExchange* pFX)。 CDatabase 對(duì)象是用來(lái)連接一個(gè)數(shù)據(jù)源的。當(dāng)構(gòu)造一個(gè) CDatabase類(lèi)完成后 ,可以向你的 CRecordset類(lèi)的對(duì)象傳遞這個(gè) CDatabase類(lèi)的指針。”, BOOL bUseCursorLib = TRUE )。 ? pszConnect:用來(lái)描述一個(gè)連接的字符串,可能包括一個(gè)數(shù)據(jù)源的名字,或是用戶(hù)的 ID,或是管理員的 ID和密碼。是包含一個(gè) ODBC數(shù)據(jù)源名字,或者還有一個(gè)用戶(hù) ID,或者還有密碼的字符串。 5. CDatabase::Close virtual void Close( )。 用來(lái)判斷數(shù)據(jù)源是否支持事務(wù)處理。 如果事務(wù)執(zhí)行被成功的翻轉(zhuǎn)回原來(lái)狀態(tài),那么返回值非零值,否則返回零值。 12. CDatabase::IsOpen BOOL IsOpen( ) const。 由于篇幅的原因,不能也沒(méi)有必要將所有成員函數(shù)列出。每一個(gè)表都是一個(gè)從打開(kāi)的數(shù)據(jù)源讀取出來(lái)的,但是當(dāng)用戶(hù)在一個(gè) dynaset中翻閱記錄時(shí), dynaset會(huì)隨時(shí)顯示其他或自己對(duì)某個(gè)數(shù)據(jù)的修改,不論對(duì)這個(gè)數(shù)據(jù)的修改是在你的程序中或是其它地方。然后調(diào)用 CRecordset的 open函數(shù),可以在這個(gè)函數(shù)中設(shè)定是將數(shù)據(jù)源讀出來(lái)后是當(dāng)成一個(gè)dynaset 還是一個(gè) snapshot。 2. CRecordset::m_nFields 一個(gè)記錄集的屬性變量,它指示了記錄集從數(shù)據(jù)源讀取的記錄個(gè)數(shù)。指針的缺省值為 NULL,如果不是 NULL,在 Open函數(shù)沒(méi)有被調(diào)用之前, CRecordset 會(huì)試圖打開(kāi)相應(yīng)的數(shù)據(jù)源。 CRecordset::optimizeBulkAdd。 3. CRecordset::Close virtual void Close( )。 7. CRecordset::CanScroll BOOL CanScroll( ) const。 11. CRecordset::GetRecordCount long GetRecordCount( ) const。 14. CRecordset::GetSQL const CStringamp。 判斷你所指向的記錄是否是一個(gè)被刪除的記錄,如果是,返回真值,否則返回假值。 21. CRecordset::Delete virtual void Delete( )。 這個(gè)函數(shù)是 CRecordset 類(lèi)的一個(gè)重要的函數(shù),它一般和 CRecordset::MoveNext、CRecordset::MovePrev 、 CRecordset::MoveFirst 、 CRecordset::MoveLast 、CRecordset::SetBookmark、 CRecordset::SetAbsolutePosition連用。 24. CRecordset::GetDefaultConnect virtual CString GetDefaultConnect( )。為了讓自己的對(duì)記錄集的修改或是別人對(duì)數(shù)據(jù)源的修改可見(jiàn),要在顯示記錄之前,調(diào)用函數(shù) Requery。所有的 DAO類(lèi)都是以“ Cdao”作前綴。這些類(lèi)型的異常代碼都是有 SQL的前綴的,都是一些定義好的宏。 AFX_SQL_ERROR_EMPTY_COLUMN_LIST:試圖打開(kāi)一個(gè)表的時(shí)候( 或是給出的操作無(wú)法識(shí)別為一個(gè) SELECT語(yǔ)句或是一個(gè)事務(wù)),但是這個(gè)表里面已經(jīng)是空的。 AFX_SQL_ERROR_NO_ROWS_AFFECTED:當(dāng)使用函數(shù) CRecordset::Update 或是Delete來(lái)提交一個(gè)記錄的修改的時(shí)候,系統(tǒng)卻無(wú)法找找到相應(yīng)的要修改的記錄。 ) AFX_SQL_ERROR_SQL_CONFORMANCE:驅(qū)動(dòng)函數(shù) CDatabase::OpenEx 或是CDatabase::Open 函數(shù)不符合 ODBC 的 SQL Conformance level of Minimum (SQL_OSC_MINIMUM)標(biāo)準(zhǔn)。 2. CDBException::m_strError 這個(gè)成員變量包含一個(gè)描敘異常情況的字符串。是由數(shù)據(jù)源, ODBC驅(qū)動(dòng), ODBC驅(qū)動(dòng)管理三個(gè)部分組成。應(yīng)用框架接收到一個(gè)ODBC RETCODE的時(shí)候,就調(diào) 用這個(gè)函數(shù) AfxThrowDBException , ODBC API調(diào)用失敗的時(shí)候?qū)⒂伤祷匾粋€(gè)異常的代碼。 if(!m_pSetIsBOF()) break。 bre
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1