第9講 訪問數(shù)據(jù)庫_第1頁
第9講 訪問數(shù)據(jù)庫_第2頁
第9講 訪問數(shù)據(jù)庫_第3頁
第9講 訪問數(shù)據(jù)庫_第4頁
第9講 訪問數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

主要內(nèi)容數(shù)據(jù)庫訪問概述ODBC數(shù)據(jù)源ADO對象(基于OLEDB標(biāo)準(zhǔn))數(shù)據(jù)控件與數(shù)據(jù)綁定的控件數(shù)據(jù)綁定的對話框第9講訪問數(shù)據(jù)庫19.1數(shù)據(jù)庫訪問概述主要方法開放數(shù)據(jù)庫連接(ODBCOpenDatabaseConnectivity)數(shù)據(jù)訪問對象(DAODataAccessObject)ActiveX數(shù)據(jù)對象(ADOActiveXDataObject)2ODBCODBC管理器在Windows控制面板中,包含連接數(shù)據(jù)源所需信息,即為每套連接建立(DataSourceNames)DSNODBC驅(qū)動器ODBC驅(qū)動程序,包含需處理的數(shù)據(jù)源信息適用于訪問關(guān)系型數(shù)據(jù)庫編程只需知道DSN和SQL應(yīng)用程序SQL語句ODBC管理器DSNODBC數(shù)據(jù)源ODBCAPIODBCAPI3ODBC對數(shù)據(jù)庫的操作不依賴任何DBMS每個DBMS提供自己的ODBC驅(qū)動程序能以統(tǒng)一的方式處理各種數(shù)據(jù)庫要訪問一個數(shù)據(jù)庫,需要先用“ODBC數(shù)據(jù)源管理器”把它注冊為一個ODBC數(shù)據(jù)源VC++6.0可以安裝的ODBC驅(qū)動程序:SQLServerAccessFoxproOracleExcel其他4DAO是第一個面向?qū)ο蟮慕涌谧畛跤糜贏ccess等產(chǎn)品中依賴于用Access自動獲得的MicroSoftJet數(shù)據(jù)庫引擎在這種方案中Access運行良好,但在SQLServer,Oracle網(wǎng)絡(luò)環(huán)境中運行不好有被ADO取代的趨勢5ADO是一種特殊的OLEDB客戶程序OLE數(shù)據(jù)庫(OLEDataDase)OLE——對象連接與嵌入

ObjectLinkingandEmbeddingOLEDB提供統(tǒng)一的數(shù)據(jù)訪問接口除了各種關(guān)系數(shù)據(jù)庫外,還包括:郵件數(shù)據(jù)、Web上的文本或圖形、目錄服務(wù)、……被多種語言支持(VC++、VB、Java等)支持客戶/服務(wù)器模式和基于Web的數(shù)據(jù)操作6ADOSQL語句,ADO對象庫DSNODBC數(shù)據(jù)源ADOOLEDBODBC管理器JetSQLServerExchangeOracle7ADO模型中的對象Connection對象:處理與數(shù)據(jù)源之間的連接,并使用事務(wù)機(jī)制,提供初始化Command對象:處理傳遞給數(shù)據(jù)源的命令RecordSet對象:處理SQL查詢返回的記錄數(shù)據(jù),允許用戶編輯,添加和刪除數(shù)據(jù)Field對象:處理記錄集中的列信息Parameter對象:對傳遞給數(shù)據(jù)源的命令賦參數(shù)值Property對象:操作在ADO中使用的其他對象的詳細(xì)屬性Error對象:獲得連接對象所發(fā)生的錯誤信息8ADO模型中的集合Error集合:任何包含ADO對象的操作都可能產(chǎn)生提供者錯誤,當(dāng)錯誤發(fā)生時,錯誤對象被放在錯誤集合中,每個錯誤對象代表一個提供者錯誤Parameter集合:Command對象包含了Parameter對象集合,參數(shù)集合包含了應(yīng)用于Command對象的所有參數(shù)對象Field集合:RecordSet對象包含F(xiàn)ield對象的集合,F(xiàn)ield對象集合包含了Field對象Properties集合:包含了個對象的屬性99.2ODBC操作MFC中與ODBC有關(guān)的主要類CDatabase(數(shù)據(jù)庫類)提供對數(shù)據(jù)源的連接等操作CRecordSet

(記錄集類)代表從數(shù)據(jù)源選擇的一組記錄(記錄集)對記錄集中記錄進(jìn)行滾動、添加、修改、刪除等操作CRecordView

(記錄集視圖類)是CFormView的派生類,用于派生視圖窗口提供一個表單視圖與某個記錄集直接關(guān)聯(lián)可用DDX在記錄集與變淡視圖的控件之間傳遞數(shù)據(jù)10創(chuàng)建ODBC數(shù)據(jù)源創(chuàng)建一個數(shù)據(jù)庫在Windows中創(chuàng)建數(shù)據(jù)源“控制面板”、“管理工具”、“數(shù)據(jù)源(ODBC)”在“用戶DSN”卡中單擊“添加”選“MicrosoftAccessDriver(*.mdb)”在打開的對話框中輸入數(shù)據(jù)源名稱,單擊“選擇”在打開的對話框中選擇數(shù)據(jù)庫,單擊“確定”,則該數(shù)據(jù)源顯示在“用戶數(shù)據(jù)源”列表中11在MFC中選擇數(shù)據(jù)源創(chuàng)建一個單文檔應(yīng)用程序(ODBCStudent)在第2步選“數(shù)據(jù)庫查看使用文件支持”視圖類將從CRecordView派生,全面支持文檔操作和數(shù)據(jù)庫操作單擊“DataSource”選“ODBC”,并選已經(jīng)建立的數(shù)據(jù)源在“Recordsettype”中“Snapshot”(快照),單擊“OK”選擇數(shù)據(jù)表(例如students),單擊“OK”,回到第2步界面繼續(xù)后面的步驟12生成的程序中添加的內(nèi)容在生成的程序中添加了一個ODBCStudentSet類它與students表進(jìn)行數(shù)據(jù)綁定負(fù)責(zé)數(shù)據(jù)表的操作有與students表對應(yīng)的數(shù)據(jù)成員視圖類由CRecordView派生CRecordView由CFromView派生可以直接使用控件視圖類中添加了一個CODBCStudentSet類指針:m_pSet指向文檔類的CODBCStudentSet類對象m_oDBCStudentSet13設(shè)計瀏覽記錄的界面為表中的每個字段設(shè)計一個控件編輯框用于顯示字符型、數(shù)值型字段DateTimePicker用于顯示日期型字段編譯錯誤:'DDX_FieldDateTimeCtrl':undeclaredidentifier解決方案DDX_FieldDateTimeCtrl

改為DDX_DateTimeCtrl去掉()中的最后一個參數(shù)為每個用于顯示字段的控件關(guān)聯(lián)相應(yīng)的變量這些變量已經(jīng)在CODBCStudentSet類中存在14瀏覽數(shù)據(jù)庫運行后界面切換記錄159.3在基于對話框的應(yīng)用程序中使用ADO技術(shù)使用Data控件使用ADO的data控件控制數(shù)據(jù)庫的連接和記錄切換使用ADO的數(shù)據(jù)綁定控件顯示或編輯數(shù)據(jù)庫中的記錄不需編寫代碼利用對話框編輯器添加控件使用數(shù)據(jù)綁定(data-bound)對話框生成一個對話框生成控制記錄切換的按鈕生成顯示記錄每個字段的控件不需編寫代碼16使用Data控件添加ADOData控件(ADODataControl

)并設(shè)置屬性控制數(shù)據(jù)庫的連接控制記錄的切換添加數(shù)據(jù)綁定控件(Data-BoundControls

)并設(shè)置屬性顯示、編輯數(shù)據(jù)庫中的數(shù)據(jù)17添加ADOData控件創(chuàng)建一個基于對話框的應(yīng)用程序添加ADOData控件(ADODataControl)并設(shè)置屬性添加的步驟選“工程”、“添加工程”、“ComponentsandControls…”雙擊對話框中“RegisteredActiveXControls”選“MicrosoftADODataControlsVersion6.0(OLEDB)”,并單擊“Insert”,再單擊“OK”單擊“OK”,“結(jié)束”在工程中添加了若干類在控件工具箱窗口中添加了一個ADODataControl

控件圖標(biāo)18添加ADOData控件設(shè)置屬性在對話框中畫一個數(shù)據(jù)控件,并打開屬性窗口設(shè)置ID(例如IDC_ADODC1)和標(biāo)題(例如Adodc1)設(shè)置連接資源(數(shù)據(jù)庫)選“通用”、“使用連接字符串”,單擊“生成”選“MicrosoftJet4.0OLEDBprovider”(Access),“下一步”輸入或選擇數(shù)據(jù)庫名稱單擊“測試連接”,連接成功后,單擊“OK”設(shè)置數(shù)據(jù)源類型,選“數(shù)據(jù)源”,命令類型:“adCmdTable”表:選擇數(shù)據(jù)庫中的一個表注:若命令類型為“adCmdText”,則在“命令文本”中輸入SQL語句19ADOData控件的幾個消息WillMove記錄集被打開,或當(dāng)前記錄位置變化(記錄指針移動)MoveComplete——WillMove消息之后WillChangeField——數(shù)據(jù)屬性值被修改時FieldChangeComplete——WillChangeField之后WillChangeRecord——記錄被更新時RecordChangeComplete——WillChangeRecord之后InfoMessage當(dāng)數(shù)據(jù)提供者(數(shù)據(jù)源)返回一個結(jié)果20添加ADOData-Bound控件添加數(shù)據(jù)綁定控件(顯示數(shù)據(jù))并設(shè)置屬性添加的步驟選“工程”、“添加工程”、“ComponentsandControls…”雙擊對話框中“RegisteredActiveXControls”選“MicrosoftDataGridControlsVersion6.0(OLEDB)”,并單擊“Insert”,再單擊“OK”單擊“OK”,“結(jié)束”在工程中添加了若干類在控件工具箱窗口中添加了一個DataGridControl控件圖標(biāo)21添加ADOData-Bound控件設(shè)置屬性在對話框中畫一個數(shù)據(jù)綁定控件,并打開屬性窗口設(shè)置ID和標(biāo)題在“All”中設(shè)置數(shù)據(jù)源()設(shè)置DataSource值為數(shù)據(jù)控件的ID(例如IDC_ADODC1)在“All”中設(shè)置允許的數(shù)據(jù)操作(也可在“通用”中設(shè)置)設(shè)置AllowAddNew、AllowArrows、AllowDelete、AllowUpdate在其他選項卡中設(shè)置其他屬性22運行界面23其他數(shù)據(jù)綁定控件DataList類似于列表框DataCombo類似于組合框MSFlexGrid可以顯示網(wǎng)格數(shù)據(jù)(與DataGrid類似)無表處理的常用功能(添加、修改、刪除等)RemoteData和DBGridRemoteData為DBGrid提供數(shù)據(jù)源有表處理的常用功能24添加VC++部件(與添加data控件類似)添加的步驟選“工程”、“添加工程”、“ComponentsandControls…”雙擊對話框中“VisualC++Components”選“ADODataBoundDialog”,并單擊“Insert”,再單擊“OK”,打開ADODataBoundDialog

Wizard

TheADODataBoundDialog

Wizard共4步編寫打開此對話框的代碼例如,在應(yīng)用程序類的InitInstance()中添加CRsCgDlg

dlg;dlg.DoModal();應(yīng)用程序類的cpp文件中加#include"RsCgDlg.h"使用數(shù)據(jù)綁定(data-bound)對話框25ADODataBoundDialogWizard第1步:建立連接字符串單擊“build”,出現(xiàn)“數(shù)據(jù)連接屬性”(DataLinkproperties)對話框MicrosoftJet4.0OLEDBprovider(對于Access)選擇已有數(shù)據(jù)庫的名字,測試連接是否能夠成功,按“OK”查看生成的連接字符串第2步:選擇數(shù)據(jù)源CommandText——輸入SQL語句Table——選擇數(shù)據(jù)表26ADODataBoundDialogWizard第3步:選擇游標(biāo)指針(SelecttheCursor)游標(biāo)位置(CursorLocation)adUseClient:結(jié)果集放在客戶機(jī)的緩沖區(qū)內(nèi),速度塊,無法感覺他人對數(shù)據(jù)庫的修改(不敏感)adUseServer

:結(jié)果集放在服務(wù)器的緩沖區(qū)內(nèi),對數(shù)據(jù)的變化較敏感游標(biāo)類型(CursorType)adOpenDynamic

(動態(tài)游標(biāo)):其他用戶對記錄的改變會體現(xiàn)在記錄集中adOpenStatic(靜態(tài)游標(biāo)):其他用戶對記錄的改變不體現(xiàn)在記錄集中adOpenForwardOnly(向前游標(biāo)):與靜態(tài)游標(biāo)類似,但只能在記錄集中向前移動adOpenKeyset(關(guān)鍵字游標(biāo)):能反映他用戶對記錄的修改與刪除,但不顯示他用戶添加的新記錄第4步:確認(rèn)單擊“完成”27添加的新內(nèi)容添加了一個對話框默認(rèn)ID為:CG_IDD_RECORDSET切換

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論