




已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
實驗:ADO接口編程,于東 2012上,第十四周,目標: 實現(xiàn)W14_1_ADO程序,使用ADO接口對Access數(shù)據(jù)庫編程。完成后,嘗試使用ODBC連接SQL數(shù)據(jù)庫。,2,實驗課:使用ADO接口編程,選擇formview為基類 核心控件為ListCtrl 設置各種控件、變量、消息響應,3,Step1:建立SDI程序,4,Step2:ADO接口初始化,在stdafx.h中,添加代碼: 在工程的InitInstanse函數(shù)中,添加代碼:,4,4,在View類中添加ADO的3個核心類對象 添加其他變量m_DBFileName; /數(shù)據(jù)庫文件名 long m_nColNum; /字段數(shù)量 添加函數(shù): Connect2DB、 GetFiledInfo、 UpdateView、 DeleteItem 添加消息:WM_DESTROY,處理關閉消息 添加函數(shù): PreTranslateMessage,處理del按鈕事件,5,Step3:View類設置,重載打開文件按鈕 調(diào)用打開文件通用對話框,獲取數(shù)據(jù)庫名稱 依次調(diào)用: Connect2DB(m_DBFileName); /連接到數(shù)據(jù)庫 GetFiledInfo(); /獲取表信息并顯示 UpdateView(); /遍歷表中所有記錄并顯示,6,Step4:Open按鈕,根據(jù)數(shù)據(jù)庫名稱,連接數(shù)據(jù)庫。 創(chuàng)建記錄集,寫一個SQL語句,通過open方法,獲取數(shù)據(jù)庫中所有記錄。,7,Step5: Connect2DB,判斷數(shù)據(jù)庫打開狀態(tài) 定義字段對象數(shù)組, 獲取字段數(shù)量,以及字段名稱 清空當前ListCtrl所有內(nèi)容和所有列 將字段信息填入到ListCtrl,8,Step6: GetFiledInfo,檢查數(shù)據(jù)庫狀態(tài) 清空當前l(fā)istctrl內(nèi)容 判斷當前記錄集是否為空,如果不為空,則移動指針到第一條 遍歷記錄集,讀取每條數(shù)據(jù),顯示在list中,9,Step7: UpdateView,檢查數(shù)據(jù)庫狀態(tài) 檢查控件輸入是否完整,用“NULL”將不完整部分補足 向當前記錄集中添加一條記錄。 調(diào)用update方法,將記錄集更新到數(shù)據(jù)庫,10,Step8:Add按鈕,在PreTranslateMessage中,響應按紐事件,判斷:如果按鈕為del鍵,并且當前l(fā)istctrl控件為“焦點控件”,則調(diào)用deleteitem 在DeleteItem中,獲取當前l(fā)ist中選中的條目,在全局記錄集中刪除對應的條目,更新記錄集 這里有一個bug:當list顯示的是查找結(jié)果時,會錯刪。解決方法:在view類中定義一個“查找結(jié)果”記錄集對象。并判斷當前顯示的是查找結(jié)果記錄集還是全局記錄集。,11,Step9:刪除記錄,定義查詢的SQL語句 定義查詢記錄集對象 調(diào)用connection對象的execute方法,查詢結(jié)果,返回給記錄集 遍歷記錄集,將記錄讀取顯示在list中,12,Step10:Find,刷新函數(shù)中,直接調(diào)用updateview Destroy函數(shù)中,判斷數(shù)據(jù)庫狀態(tài),關閉數(shù)據(jù)庫連接。,13,Step11:flush 、 destroy,要學習的內(nèi)容: 導入Ado動態(tài)鏈接庫 連接數(shù)據(jù)庫 執(zhí)行數(shù)據(jù)庫命令 用記錄集操作數(shù)據(jù),14,ADO接口基本使用方法,使用ADO接口,比使用DAO要復雜一些,要首先導入動態(tài)鏈接庫。 Step1:在stdafx.h中,添加代碼: 這里,通過#import命令將dll導入,根據(jù)機器不同,dll文件存放的位置和名稱也有可能不同,但肯定都是msdaoXX.dll,15,ADO接口使用導入DLL(1),Step2:在工程的InitInstanse函數(shù)中,添加代碼: Step3:在View類中,添加三個ADO對象指針:,16,ADO接口使用導入DLL(2),ADO的DLL中給出的Connction對象為指針類型,因此在使用該對象前,類似c+中的 new操作,需要首先為該指針創(chuàng)建一個實例: HRESULT hr; hr = m_pConnection.CreateInstance(“ADODB.Connection“); 其中, ADODB.Connection指定了要連接數(shù)據(jù)庫的類型,17,ADO接口使用連接數(shù)據(jù)庫(1),使用Connction對象的Open方法連接數(shù)據(jù)庫,原型: _bstr_t 是一個COM組件集中處理字符串的類, 連接字符串指定了要連接的數(shù)據(jù)庫的類型、名稱等信息,是正確連接的關鍵,18,ADO接口使用連接數(shù)據(jù)庫(2),ADO通過ConnectionString實現(xiàn)對不同類型數(shù)據(jù)庫的支持 掌握兩種連接字符串,Access、SQL: 連接Access數(shù)據(jù)庫: m_pConnection-ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=student.mdb;“ ; m_pConnection-Open(“,“,“,0); 連接SQL數(shù)據(jù)庫: m_pConnection-ConnectionString = “Provider=SQLOLEDB; Data Source= servername; Initial Catalog= databasename; User ID=userid;Password=password;”; m_pConnection-Open(“”,“”,“”,0);,19,ADO接口使用連接數(shù)據(jù)庫(3),關閉連接 在view類中添加WM_DESTROY消息響應,在其中添加判斷代碼:,20,ADO接口使用連接數(shù)據(jù)庫(4),這也是在程序中判斷連接是否有效的方法,ADO的Connection對象可以直接通過Execute函數(shù)執(zhí)行數(shù)據(jù)庫命令,函數(shù)原型: _RecordsetPtr Execute ( _bstr_t CommandText, /SQL語句命令行 VARIANT * RecordsAffected, /符合命令的記錄數(shù) long Options ) /指明執(zhí)行命令的類型,21,ADO接口使用執(zhí)行命令(1),當需要執(zhí)行復雜命令,或者執(zhí)行帶參數(shù)命令的時候,需要使用Command對象對數(shù)據(jù)庫進行操作。步驟: Step1: 創(chuàng)建Command對象實例 HRESULT hrcommand; hrcommand = m_pCommand.CreateInstance( _uuidof(Command) ); Step2: 將Command對象與Connection對象綁定 m_pCommand-ActiveConnection = m_pConnection;,22,ADO接口使用執(zhí)行命令(2),Step3: 指定操作命令SQL語句 m_pCommand-CommandText = “Select * From StudentInfo“; Step4: 執(zhí)行命令,結(jié)果返回到記錄集對象 ptmpRecordSet = m_pCommand-Execute();,23,ADO接口使用執(zhí)行命令(3),帶有參數(shù)的SQL命令的執(zhí)行,比如一個選擇語句: SELECT * FROM studentinfo WHERE number=1001 在DAO編程中,如果number要改變,就要重新拼這個語句,當參數(shù)繁多時,非常麻煩。 ADO的Command對象支持在SQL中自定義參數(shù),解決該問題。 這部分,不深入介紹,通過一個典型例子來學習,24,ADO接口使用執(zhí)行命令(4),25,ADO接口使用執(zhí)行命令(5),數(shù)據(jù)庫中的數(shù)據(jù),通過記錄集對象Recordset來訪問和修改。 ADO創(chuàng)建記錄集的方法與其他對象一致: _RecordsetPtr pRecordset; pRecordset.CreateInstance( _uuidof(Recordset) ) ; 記錄集對象通常作為Execute語句或者Command執(zhí)行語句的返回值使用。 也可以直接通過Open方法,直接填入一個SQL語句,返回查詢結(jié)果。與DAO方法類似。,26,ADO接口使用記錄集對象(1),記錄集對象的Open方法,函數(shù)原型: HRESULT Open ( const _variant_t & Source, /SQL語句 const _variant_t & ActiveConnection, /連接對象指針 enum CursorTypeEnum CursorType, enum LockTypeEnum LockType, long Options) /注意:后4三個參數(shù),按照實例設定即可 如下實例:,27,ADO接口使用記錄集對象(2),遍歷記錄集:記錄集可以看作一個數(shù)組,ADO提供了幾種方法在記錄集中移動指針,實現(xiàn)遍歷。 MoveFirst:指向第一條記錄 MoveLast:指向最后一條記錄 MoveNext:向下移動一條 MovePrev:向上移動一條 Move:根據(jù)絕對索引號移動指針 稍后實例中即見使用方法,28,ADO接口使用記錄集對象(3),獲取字段信息,看代碼:,29,ADO接口使用記錄集對象(4),獲取記錄集中的數(shù)據(jù) 記錄集對象保存著“當前記錄”的指針,因此使用記錄集對象,要首先對要操作的記錄定位。 定位后,訪問一個記錄中的對象有下面兩種方式: 第一種:如果知道表中的具體字段名,訪問方法: m_pRecordset-GetCollect(字段名); 第二種:如果不知道具體字段名,訪問方法: m_pRecordset-Fields-Itemi-Value;,30,ADO接口使用記錄集
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)場監(jiān)控設備管理制度
- 班級特殊事項管理制度
- 生產(chǎn)車間吊頂管理制度
- h3c設備管理制度
- it桌面管理制度
- yy值班管理制度
- 東明石化管理制度
- 嚴格加班管理制度
- 嚴格收賬管理制度
- 嚴格校園管理制度
- 2024年涼山州木里縣選聘社區(qū)工作者真題
- 九師聯(lián)盟2024-2025學年高二下學期6月摸底聯(lián)考英語試題(含答案)
- 2025年高考真題-化學(黑吉遼卷) 含答案(黑龍江、吉林、遼寧、內(nèi)蒙古)
- 2025年高考英語全國二卷(解析)
- 2025年新高考1卷(新課標Ⅰ卷)英語試卷
- 醫(yī)院護理崗位筆試題目及答案
- 芯核半導體科技有限公司年產(chǎn)2400套半導體零部件項目環(huán)評資料環(huán)境影響
- 2025上半年水發(fā)集團社會招聘(391人)筆試參考題庫附帶答案詳解
- 華為項目管理高級培訓教材
- 堅守廉潔底線弘揚清風正氣
- 建設項目全過程工程咨詢-第一次形成性考核-國開(SC)-參考資料
評論
0/150
提交評論