-
- 素材大。
- 1.57 MB
- 素材授權(quán):
- 免費下載
- 素材格式:
- .ppt
- 素材上傳:
- lipeier
- 上傳時間:
- 2019-11-14
- 素材編號:
- 245996
- 素材類別:
- 課件PPT
-
素材預(yù)覽
這是mfc教程ppt,包括了數(shù)據(jù)庫編程,MFC ODBC數(shù)據(jù)庫概述,MFC ODBC編程,MFC ODBC向?qū)н^程,ODBC應(yīng)用編程等內(nèi)容,歡迎點擊下載。
mfc教程ppt是由紅軟PPT免費下載網(wǎng)推薦的一款課件PPT類型的PowerPoint.
數(shù)據(jù)庫編程 Visual C++ 6.0為用戶提供了ODBC、DAO及OLE DB三種數(shù)據(jù)庫方式。這三種方式中最簡單也最常用的是ODBC,因此我們只介紹MFC的ODBC編程方法和技巧,基于OLE DB的ADO(ActiveX Data Objects, ActiveX數(shù)據(jù)對象)技術(shù),由同學們自己根據(jù)需要自己掌握。 一、MFC ODBC數(shù)據(jù)庫概述 ODBC是一種使用SQL的程序設(shè)計接口,使用ODBC能使用戶編寫數(shù)據(jù)庫應(yīng)用程序變得容易簡單,避免了與數(shù)據(jù)源相連接的復(fù)雜性。在Visual C++中,MFC的ODBC數(shù)據(jù)庫類CDatabase(數(shù)據(jù)庫類)、CRecordSet(記錄集類)和CRecordView(記錄視圖類)可為用戶管理數(shù)據(jù)庫提供了切實可行的解決方案。 數(shù)據(jù)庫基本概念 1. 數(shù)據(jù)庫和DBMS 數(shù)據(jù)庫是指以一定的組織形式存放在計算機存儲介質(zhì)上的相互關(guān)聯(lián)的數(shù)據(jù)的集合。例如,把一個學校的教師、學生和課程等數(shù)據(jù)有序地組織起來,存儲在計算機磁盤上,就構(gòu)成了一個數(shù)據(jù)庫。 為了有效地管理數(shù)據(jù)庫,常常需要一些數(shù)據(jù)庫管理系統(tǒng)(DBMS)為用戶提供對數(shù)據(jù)庫操作的各種命令、工具及方法,包括數(shù)據(jù)庫的建立和記錄的輸入、修改、檢索、顯示、刪除和統(tǒng)計等。流行的DBMS都提供了一個SQL接口。 2. SQL作為用來在DBMS中訪問和操作的語言,SQL(結(jié)構(gòu)化查詢語言)語句分為兩類: DDL(Data Definition Language,數(shù)據(jù)定義語言)語句,它是用來創(chuàng)建表、索引等; DML(Data Manipulation Language,數(shù)據(jù)操作語言)語句,這些語句是用來讀取數(shù)據(jù)、更新數(shù)據(jù)和執(zhí)行其他類似操作的語句。 3. ODBC、DAO和OLE DB ODBC提供了應(yīng)用程序接口(API),使得任何一個數(shù)據(jù)庫都可以通過ODBC驅(qū)動器與指定的DBMS相聯(lián)。用戶的程序就可以通過調(diào)用ODBC驅(qū)動管理器中相應(yīng)的驅(qū)動程序達到管理數(shù)據(jù)庫的目的。作為Microsoft Windows Open Standards Architecture (WOSA,Windows開放式服務(wù)體系結(jié)構(gòu))的主要組成部分,ODBC一直沿用至今。 DAO類似于用Microsoft Access或Microsoft Visual Basic編寫的數(shù)據(jù)庫應(yīng)用程序,它使用Jet數(shù)據(jù)庫引擎形成一系列的數(shù)據(jù)訪問對象。 OLE DB試圖提供一種統(tǒng)一的數(shù)據(jù)訪問接口,并能處理除了標準關(guān)系型數(shù)據(jù)庫中的數(shù)據(jù)之外,還能處理包括郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(wù)(Directory Services)以及主機系統(tǒng)中的IMS和VSAM數(shù)據(jù)。OLE DB提供一個數(shù)據(jù)庫編程COM(組件對象模型)接口,使得數(shù)據(jù)的使用者(應(yīng)用程序)可以使用同樣的方法訪問各種數(shù)據(jù),而不用考慮數(shù)據(jù)的具體存儲地點、格式或類型。 4. ADO ADO 是目前在Windows環(huán)境中比較流行的客戶端數(shù)據(jù)庫編程技術(shù)。它是Microsoft為最新和最強大的數(shù)據(jù)訪問范例OLE DB而設(shè)計的,是一個便于使用的應(yīng)用程序?qū)咏涌。ADO使用戶應(yīng)用程序能夠通過“OLE DB提供者”訪問和操作數(shù)據(jù)庫服務(wù)器中的數(shù)據(jù)。由于它兼具有強大的數(shù)據(jù)處理功能(處理各種不同類型的數(shù)據(jù)源、分布式的數(shù)據(jù)處理等等)和極其簡單、易用的編程接口,因而得到了廣泛的應(yīng)用。 ADO技術(shù)有許多優(yōu)點,能夠訪問包括關(guān)系數(shù)據(jù)庫、非關(guān)系數(shù)據(jù)庫及所有的文件系統(tǒng),還支持各種B/S與基于Web的應(yīng)用程序,具有遠程數(shù)據(jù)服務(wù)RDS(Remote Data Service)的特性,是遠程數(shù)據(jù)存取的發(fā)展方向。 二、MFC ODBC編程 用MFC AppWizard使用ODBC數(shù)據(jù)庫的一般過程是: ①用Access或其他數(shù)據(jù)庫工具構(gòu)造一個數(shù)據(jù)庫; ②在Windows中為剛才構(gòu)造的數(shù)據(jù)庫定義一個ODBC數(shù)據(jù)源; ③在創(chuàng)建數(shù)據(jù)庫處理的文檔應(yīng)用程序向?qū)е羞x擇數(shù)據(jù)源; ④設(shè)計界面,并使控件與數(shù)據(jù)表字段關(guān)聯(lián)。 1. 構(gòu)造數(shù)據(jù)庫 用Microsoft Access 創(chuàng)建一個數(shù)據(jù)庫學生成績.mdb 2. 創(chuàng)建ODBC數(shù)據(jù)源 Windows中的ODBC組件是出現(xiàn)在系統(tǒng)的“控制面板”管理工具中,如下圖所示。 雙擊ODBC圖標(在圖中已圈定),進入ODBC數(shù)據(jù)源管理器。用戶可以設(shè)置ODBC數(shù)據(jù)源的一些信息。 三、MFC ODBC向?qū)н^程 3. 在MFC AppWizard中選擇數(shù)據(jù)源 用MFC AppWizard可以容易地創(chuàng)建一個支持數(shù)據(jù)庫的文檔應(yīng)用程序。 用MFC AppWizard創(chuàng)建一個單文檔應(yīng)用程序MyStudentDB。 在向?qū)У牡?步對話框中加入數(shù)據(jù)庫的支持,如圖所示。在該對話框中用戶可以選擇對數(shù)據(jù)庫支持程序。 選中“數(shù)據(jù)庫查看使用文件支持”項 保留其他默認選項,單擊[OK]按鈕,彈出如圖所示的“Select Database Tables”對話框,從中選擇要使用的表S。 單擊[OK]按鈕,又回到了向?qū)У牡?步對話框。 單擊[完成]按鈕。開發(fā)環(huán)境自動打開表單視圖CStudentDBView的對話框資源模板IDD_STUDENTDB_FORM以及相應(yīng)的對話框編輯器。 編譯并運行,結(jié)果如圖所示。 4. 設(shè)計瀏覽記錄界面 在上面程序中,MFC為用戶自動創(chuàng)建了用于瀏覽數(shù)據(jù)表記錄的工具按鈕和相應(yīng)的“記錄”菜單項。若用戶選擇這些瀏覽記錄命令,系統(tǒng)會自動調(diào)用相應(yīng)的函數(shù)來移動數(shù)據(jù)表的當前位置。 若在表單視圖中添加控件并與表的字段相關(guān)聯(lián),就可以根據(jù)表的當前記錄位置顯示相應(yīng)的數(shù)據(jù)。其步驟如下: 按照圖所示的布局,為表單對話框資源模板添加表所示的控件。 按快捷鍵Ctrl+W,彈出MFC ClassWizard對話框,切換到Member Variables頁面,在Class name框中選擇CMystudentDBView,為上述控件添加相關(guān)聯(lián)的數(shù)據(jù)成員。與以往添加控件變量不同的是,這里添加的控件變量都是由系統(tǒng)自動定義的,并與數(shù)據(jù)庫表字段相關(guān)聯(lián)的。例如,雙擊IDC_SNO,在彈出的“Add Member Variable”對話框中的成員變量下拉列表中選擇要添加的成員變量名m_pSet->m_sno,選擇后,控件變量的類型將自動設(shè)置,如圖所示。 按照上一步驟的方法,為表所示的其他控件依次添加相關(guān)聯(lián)的成員變量。 需要注意的是,控件變量的范圍和大小應(yīng)與數(shù)據(jù)表中的字段一一對應(yīng)。結(jié)果如圖所示。 四、ODBC應(yīng)用編程 1. 數(shù)據(jù)表綁定更新 按快捷鍵Ctrl+W,打開MFC ClassWizard對話框,切換到“Member Variables”頁面。 在“Class name”的下拉列表中選擇“CStudentDBSet”,此時MFC ClassWizard對話框的[Update Columns]和[Bind All]按鈕被激活,如圖所示。 單擊[Update Columns]按鈕,又彈出前面的“Database Options”對話框,選擇ODBC數(shù)據(jù)源,如圖所示。 單擊[OK]按鈕,彈出如圖所示的“Select Database Tables”對話框,從中選擇要使用的表。 單擊[OK]按鈕,又回到MFC ClassWizard界面,如圖所示。 單擊[Bind All]按鈕,MFC Wizard將自動為字段落添加相關(guān)聯(lián)的變量。 2. 使用MFC所供的ODBC類: CDatabase(數(shù)據(jù)庫類) CRecordSet(記錄集類) CRecordView(可視記錄集類)。 CDatabase類用來提供對數(shù)據(jù)源的連接,通過它可以對數(shù)據(jù)源進行操作; CRecordSet類對象提供了從數(shù)據(jù)源中提取出表的記錄集,并提供了兩種操作形式:動態(tài)行集(Dynasets)和快照集(Snapshots)。 動態(tài)行集能與其他用戶所做的更改保持同步 快照集則是數(shù)據(jù)的一個靜態(tài)視圖。 CRecordView類用來控制并顯示數(shù)據(jù)庫記錄,該視圖是直接連到一個CRecordSet對象的表單視圖。但在實際應(yīng)用過程中,CRecordSet類是用戶最關(guān)心的,因為它為用戶提供了對表記錄進行操作的許多功能,如查詢記錄、添加記錄、刪除記錄、修改記錄等,并能直接為數(shù)據(jù)源中的表映射一個CRecordSet類對象,方便用戶的操作。 3. 查詢記錄 使用CRecordSet類的成員變量m_strFilter、m_strSort和成員函數(shù)Open可以對表進行記錄的查詢和排序。在MyStudentDB的表單中添加一個編輯框和一個[查詢]按鈕,單擊[查詢]按鈕,將按編輯框中的學號內(nèi)容對數(shù)據(jù)表進行查詢,并將查找到的記錄顯示在前面添加的控件中。具體過程如下: 打開應(yīng)用程序的表單資源,按圖所示的布局添加控件,其中添加的編輯框ID號設(shè)為IDC_SNO_QUERY,“查詢”按鈕的ID號設(shè)為IDC_BUTTON_QUERY。 用MFC ClassWizard為控件IDC_SNO_QUERY添加關(guān)聯(lián)變量m_strQuery。 在Message Maps頁面的Cex2View類中添加按鈕控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并在映射函數(shù)中添加下列代碼: UpdateData(); m_strQuery.TrimLeft(); if (m_strQuery.IsEmpty()){ MessageBox("要查詢的學號不能為空!"); return; } if (m_pSet->IsOpen()) m_pSet->Close();// 如果記錄集打開,則先關(guān)閉 m_pSet->m_strFilter.Format (“sno='%s'",m_strQuery); //sno是S表的字段名,用來指定查詢條件 m_pSet->m_strSort = “depart"; m_pSet->Open(); // 打開記錄集 if (!m_pSet->IsEOF()) // 如果打開記錄集有記錄 UpdateData(FALSE); // 自動更新表單中控件顯示的內(nèi)容 else MessageBox("沒有查到你要找的學號記錄!"); } 代碼中, m_strFilter和m_strSort是CRecordSet的成員變量,用來執(zhí)行條件查詢和結(jié)果排序。其中,m_strFilter稱為“過濾字符串”,相當于SQL語句中WHERE后的條件串;而m_strSort稱為“排序字符串”,相當于SQL語句中ORDER BY后的字符串。若字段的數(shù)據(jù)類型是文本,則需要在m_strFilter字符串中將單引號將查詢的內(nèi)容括起來,對于數(shù)字,則不需要用單引號。 編譯運行并測試,結(jié)果如圖所示。 4. 編輯記錄 CRecordSet類為用戶提供了許多對表記錄進行操作的成員函數(shù)用來添加記錄、刪除記錄和修改記錄等。 4.1 增加記錄 增加記錄是使用AddNew函數(shù),但要求數(shù)據(jù)庫必須是以“可增加”的方式打開的。下面的代碼是在表的末尾增加新記錄: void CMyStudentDBView::OnButtonAdd() { UpdateData(); m_pSet->AddNew(); m_pSet->m_sno=m_addsno; m_pSet->m_sname=m_addname; m_pSet->m_ssex=m_addsex; m_pSet->m_depart=m_adddepart; m_pSet->Update(); m_pSet->MoveLast(); m_pSet->Requery(); MessageBox("添加記錄成功"); m_addsno=m_addname=m_addsex=m_adddepart=""; UpdateData(false); } 4.2 刪除記錄 可以直接使用CRecordSet::Delete函數(shù)來刪除記錄。需要說明的是,要使刪除操作有效,還需要移動記錄函數(shù)。例如下面的代碼: m_pSet->Delete(); m_pSet->Requery(); MessageBox("刪除成功"); UpdateData(false); m_pSet->MoveNext(); if(m_pSet->IsEOF()) { m_pSet->MoveLast(); UpdateData(false); } 4.3 修改記錄 函數(shù)CRecordSet::Edit可以用來修改記錄: m_pSet->Edit(); // 修改當前記錄 m_pSet->m_name=“劉向東”; // 修改當前記錄字段值 ...... m_pSet->Update(); // 將修改結(jié)果存入數(shù)據(jù)庫 m_pSet->Requery(); 4.4 撤消操作 如果用戶在進行增加或者修改記錄后,希望放棄當前操作,則在調(diào)用CRecordSet::Update()函數(shù)之前調(diào)用CRecordSet::Move(AFX_MOVE_REFRESH)來撤消操作,便可恢復(fù)在增加或修改操作之前的當前記錄。
mfc編程ppt:這是mfc編程ppt,包括了MFC ODBC數(shù)據(jù)庫概述,MFC ODBC編程,MFC ODBC向?qū)н^程,ODBC應(yīng)用編程等內(nèi)容,歡迎點擊下載。
mfc按鈕控件ppt:這是mfc按鈕控件ppt,包括了對話框的使用,控件的創(chuàng)建和使用方法,作業(yè)1,常用控件,通用對話框和消息對話框,作業(yè)2等內(nèi)容,歡迎點擊下載。