版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
開放數(shù)據(jù)庫連接(ODBC)ODBC概念ODBC的構(gòu)成建立ODBC數(shù)據(jù)源第1頁/共70頁第一頁,共71頁。ODBC概念ODBC(開放數(shù)據(jù)庫接連,OpenDataBaseConnectivity)是Microsoft公司開發(fā)的一套開放的數(shù)據(jù)庫系統(tǒng)應(yīng)用程序接口標準。
ODBC使得客戶端應(yīng)用不再緊密地依賴于數(shù)據(jù)庫管理系統(tǒng),用戶有廣泛的挑選余地來選擇自己喜歡和熟悉的開發(fā)工具。ODBC使數(shù)據(jù)庫應(yīng)用程序具有很好的適應(yīng)性和可移植性,并且具備同時訪問多種數(shù)據(jù)庫管理系統(tǒng)的能力。第2頁/共70頁第二頁,共71頁。ODBC的構(gòu)成應(yīng)用程序驅(qū)動程序管理器驅(qū)動程序數(shù)據(jù)源第3頁/共70頁第三頁,共71頁。VB應(yīng)用程序驅(qū)動程序管理器數(shù)據(jù)源1數(shù)據(jù)源2數(shù)據(jù)源3數(shù)據(jù)源4第4頁/共70頁第四頁,共71頁。驅(qū)動程序管理器的工作驅(qū)動程序管理器是Windows下的應(yīng)用程序,其主要作用是:安裝指定的驅(qū)動程序;定義數(shù)據(jù)源,并把數(shù)據(jù)源映射到具體的ODBC驅(qū)動程序上;為每個驅(qū)動程序提供ODBC函數(shù)的入口點;檢查ODBC參數(shù)的合法性等。第5頁/共70頁第五頁,共71頁。ODBC驅(qū)動程序的具體任務(wù)ODBC應(yīng)用程序不能直接存取數(shù)據(jù)庫,它將所要執(zhí)行的操作提交給數(shù)據(jù)庫驅(qū)動程序,通過驅(qū)動程序?qū)崿F(xiàn)對數(shù)據(jù)庫的各種操作,數(shù)據(jù)庫操作結(jié)果也通過驅(qū)動程序返回給應(yīng)用程序。ODBC驅(qū)動程序的具體任務(wù)有:建立與數(shù)據(jù)源的連接;向數(shù)據(jù)源提交SQL請求;處理查詢結(jié)果;將數(shù)據(jù)源錯誤轉(zhuǎn)換為標準錯誤代碼,返回給應(yīng)用程序;提交事務(wù)的開始請求、完成請求和撤消請求等。第6頁/共70頁第六頁,共71頁。什么是數(shù)據(jù)源數(shù)據(jù)源是指任何一種可以通過ODBC連接的數(shù)據(jù)庫管理系統(tǒng),包括要訪問的數(shù)據(jù)庫和數(shù)據(jù)庫的運行平臺(包括數(shù)據(jù)庫管理系統(tǒng)和運行數(shù)據(jù)庫管理系統(tǒng)的服務(wù)器)。它可以是PC平臺上的FoxPro數(shù)據(jù)庫、Windows平臺上的SQLServer數(shù)據(jù)庫或OS/2平臺的Oracle數(shù)據(jù)庫等。數(shù)據(jù)源名掩蓋了數(shù)據(jù)庫服務(wù)器之間的差別,通過定義多個數(shù)據(jù)源,讓每個數(shù)據(jù)源名對應(yīng)一個數(shù)據(jù)庫管理系統(tǒng)中的指定數(shù)據(jù)庫,這樣就可以實現(xiàn)在應(yīng)用程序中通過數(shù)據(jù)源名而不是具體的數(shù)據(jù)庫名訪問指數(shù)據(jù)庫的目的。第7頁/共70頁第七頁,共71頁。建立ODBC數(shù)據(jù)源可以通過Windows的控制面板可以建立ODBC數(shù)據(jù)源。
建立步驟為:
第8頁/共70頁第八頁,共71頁。第9頁/共70頁第九頁,共71頁。第10頁/共70頁第十頁,共71頁。第11頁/共70頁第十一頁,共71頁。ODBC數(shù)據(jù)源共有三種類型,第一種是用戶數(shù)據(jù)源(用戶DSN),第二種是系統(tǒng)數(shù)據(jù)源(系統(tǒng)DSN),第三種是文件數(shù)據(jù)源(文件DSN)。用戶DSN只能用于當前定義此數(shù)據(jù)源的機器上,而且只有定義數(shù)據(jù)源的用戶才可以使用;系統(tǒng)DSN可用于當前機器上的所有用戶;文件DSN是將用戶定義的數(shù)據(jù)源信息保存到一個文件中,并可被所有安裝了相同驅(qū)動程序的不同機器上的用戶共享。第12頁/共70頁第十二頁,共71頁。第13頁/共70頁第十三頁,共71頁。第14頁/共70頁第十四頁,共71頁。第15頁/共70頁第十五頁,共71頁。第16頁/共70頁第十六頁,共71頁。第17頁/共70頁第十七頁,共71頁。第18頁/共70頁第十八頁,共71頁。第19頁/共70頁第十九頁,共71頁。新建數(shù)據(jù)源第20頁/共70頁第二十頁,共71頁。數(shù)據(jù)訪問接口(ADO)訪問數(shù)據(jù)庫的幾種方式一致的數(shù)據(jù)訪問策略
ADO對象模型ADO數(shù)據(jù)控件與數(shù)據(jù)綁定控件
第21頁/共70頁第二十一頁,共71頁。訪問數(shù)據(jù)庫的幾種方式使用數(shù)據(jù)訪問接口(對象模型)ActiveX數(shù)據(jù)對象(ADO,ActiveXDataObjects
)遠程數(shù)據(jù)對象(RDO,RemoteDataObjects
)數(shù)據(jù)訪問對象(DAO,DataAccessObjects)使用控件數(shù)據(jù)庫表記錄此方法局限性強,處理數(shù)據(jù)量小。直接調(diào)用ODBCAPI(應(yīng)用程序編程接口)(ApplicationProgrammingInterface)編程復雜。第22頁/共70頁第二十二頁,共71頁。一致的數(shù)據(jù)訪問策略的體系結(jié)構(gòu)前端應(yīng)用程序ADOOLEDB提供者提供者提供者提供者VSAM/ISAME-mail消息目錄服務(wù)ODBC提供者文件系統(tǒng)關(guān)系數(shù)據(jù)庫第23頁/共70頁第二十三頁,共71頁。ADO對象模型ADO是面向?qū)ο蟮腁PI,它只需開發(fā)者掌握幾個簡單對象的方法和屬性。
ADO對象模型中包含了三核心對象:Connection、Command和Recordset。開發(fā)人員可以創(chuàng)建這三個對象并使用這些對象訪問數(shù)據(jù)庫。在ADO對象模型中還有幾個其他對象:Field、Property、Error和Parameter,它們是前面三個對象的子對象。這些對象的描述如下:
第24頁/共70頁第二十四頁,共71頁。Connection對象:包含了與數(shù)據(jù)源連接的信息。Command對象:定義一個SQL語句、存儲過程等與命令相關(guān)的信息。Recordset對象:包含了從數(shù)據(jù)源得到的記錄集。Field對象:包含了記錄集中的某個記錄的字段信息。字段信息包括字段的數(shù)據(jù)類型、精度和數(shù)據(jù)范圍等。Property對象:ADO對象的屬性集。Parameter對象:保存與Command對象相關(guān)的參數(shù)。Error對象:包含了由數(shù)據(jù)源產(chǎn)生的Errors集合中的擴展的錯誤信息。由于一個單獨的語句會產(chǎn)生一個或多個錯誤,因此Errors集合可以同時包括一個和多個Error對象。第25頁/共70頁第二十五頁,共71頁。ADO對象模型ConnectionErrorCommandParameterRecordsetFieldPropertyPropertyPropertyProperty第26頁/共70頁第二十六頁,共71頁。ADO數(shù)據(jù)控件與數(shù)據(jù)綁定控件ADO數(shù)據(jù)控件是使用ADO數(shù)據(jù)對象來快速建立應(yīng)用程序和數(shù)據(jù)源之間的連接,并快速創(chuàng)建數(shù)據(jù)訪問結(jié)果記錄集的工具。由于ADO數(shù)據(jù)控件不具有顯示數(shù)據(jù)的功能,因此要將數(shù)據(jù)操作結(jié)果在用戶界面上顯示出來,就要靠數(shù)據(jù)綁定控件來實現(xiàn)。ADO數(shù)據(jù)控件數(shù)據(jù)綁定控件第27頁/共70頁第二十七頁,共71頁。ADO數(shù)據(jù)控件在VB的工具箱中添加ADO數(shù)據(jù)控件ADODC對象的主要屬性、方法和事件RecordSet對象的主要屬性和方法
RecordSet對象的主要屬性
Fields對象屬性
RecordSet對象的主要方法第28頁/共70頁第二十八頁,共71頁。在VB的工具箱中添加ADO數(shù)據(jù)控件第29頁/共70頁第二十九頁,共71頁。第30頁/共70頁第三十頁,共71頁。ADO數(shù)據(jù)控件(ADODC)ADODC在窗體中的樣式第31頁/共70頁第三十一頁,共71頁。ADODC對象的主要屬性、方法和事件ADODC對象的主要屬性ADODC對象的主要方法ADODC對象的主要事件第32頁/共70頁第三十二頁,共71頁。ADODC對象的主要屬性ConnectionString屬性(用于連接數(shù)據(jù)源)Command屬性RecordSource屬性CommandType屬性Recordset屬性第33頁/共70頁第三十三頁,共71頁。ConnectionString屬性設(shè)置步驟使用ODBC數(shù)據(jù)資源名稱以建立ODBC數(shù)據(jù)源時使用使用連接字符串未建立ODBC數(shù)據(jù)源時使用第34頁/共70頁第三十四頁,共71頁。使用ODBC數(shù)據(jù)資源名稱第35頁/共70頁第三十五頁,共71頁。第36頁/共70頁第三十六頁,共71頁。使用連接字符串第37頁/共70頁第三十七頁,共71頁。第38頁/共70頁第三十八頁,共71頁。第39頁/共70頁第三十九頁,共71頁。第40頁/共70頁第四十頁,共71頁。第41頁/共70頁第四十一頁,共71頁。RecordSource屬性此屬性用于設(shè)置ADO結(jié)果集的內(nèi)容,這個內(nèi)容可以來自于一張表,也可以來自一個查詢語句,也可以來自一個存儲過程的執(zhí)行結(jié)果。RecordSource屬性的值與CommandType屬性的值有關(guān),兩者協(xié)同使用。第42頁/共70頁第四十二頁,共71頁。CommandType屬性此屬性指明命令的類型,即要訪問的數(shù)據(jù)的來源。一般這個屬性和RecordSource(記錄源)屬性配合使用。CommandType屬性的取值有如下四個:adCmdUnknown:默認值。表示RecordSource中的命令類型未知。adCmdTable:RecordSource屬性的內(nèi)容是一個表名,表示其結(jié)果集是對此表執(zhí)行的無條件查詢的結(jié)果。adCmdText:RecordSource屬性的內(nèi)容是一個查詢語句文本串,表示其結(jié)果集是執(zhí)行此查詢語句文本串產(chǎn)生的結(jié)果。adCmdStoredProc:RecordSource屬性的內(nèi)容是一個存儲過程名,表示其結(jié)果集是執(zhí)行此存儲過程產(chǎn)生的結(jié)果。設(shè)置CommandType屬性的方法參見設(shè)置RecordSource部分。第43頁/共70頁第四十三頁,共71頁。CommandType屬性設(shè)置步驟第44頁/共70頁第四十四頁,共71頁。第45頁/共70頁第四十五頁,共71頁。Recordset屬性Recordset屬性是ADO數(shù)據(jù)控件中實現(xiàn)數(shù)據(jù)記錄操作的最重要的屬性這個屬性本身又是一個對象,也有自己的屬性和方法,它直接指向ADO對象模型中的Recordset對象。稍后介紹該對象第46頁/共70頁第四十六頁,共71頁。
ADODC對象的主要方法
ADODC控件最常用的是Refresh方法。Refresh方法用于更新ADODC控件屬性,使修改后的ADO數(shù)據(jù)控件屬性生效。當修改了ADODC控件的ConnectionString屬性的值時,使用Refresh方法會重新連接一次數(shù)據(jù)庫;當修改了ADODC控件的RecordSource屬性的值時,使用Refresh方法會重新執(zhí)行RecordSource屬性的內(nèi)容,重新產(chǎn)生結(jié)果集。使用Refresh方法的格式為:
ADODC控件名.Refresh
第47頁/共70頁第四十七頁,共71頁。ADODC對象的主要事件EndOfRecordset事件:當在結(jié)果集中移動記錄指針時,當記錄指針超出了結(jié)果集的最后一條記錄時,觸發(fā)此事件。Error事件:只有在沒有執(zhí)行任何VB代碼而發(fā)生了一個數(shù)據(jù)訪問錯誤時,才會觸發(fā)此事件。WillChangeField事件和FieldChangeComplete事件:當對結(jié)果集中的一個或多個字段值進行修改前,觸發(fā)WillChangeField事件;當對結(jié)果集中的一個或多個字段值修改之后,觸發(fā)FieldChangeComplete事件。WillChangeRecord事件和RecordChangeComplete事件:當對結(jié)果集中的一個或多個記錄進行修改前,觸發(fā)WillChangeRecord事件;當對結(jié)果集中的一個或多個記錄修改之后,觸發(fā)RecordChangeComplete事件。WillMove事件和MoveComplete事件:在結(jié)果集的當前行記錄指針移動之前,觸發(fā)WillMove事件;在結(jié)果集的當前行記錄指針移動完成后,觸發(fā)MoveComplete事件。第48頁/共70頁第四十八頁,共71頁。RecordSet對象的主要屬性和方法Recordset屬性也稱為記錄集或結(jié)果集,用于存放從數(shù)據(jù)提供者那里獲得的查詢結(jié)果,這個結(jié)果一般存放在客戶端內(nèi)存中,可以理解為是客戶端的游標。每個結(jié)果集有一個當前行指針,指向正在操作的記錄。在VB數(shù)據(jù)庫應(yīng)用程序中,一般不直接對數(shù)據(jù)庫中的數(shù)據(jù)進行操作,而是通過記錄集進行的。因此,記錄集是VB應(yīng)用程序和數(shù)據(jù)庫之間相互連接的橋梁。對數(shù)據(jù)庫中數(shù)據(jù)的操作主要是通過RecordSet對象完成的。第49頁/共70頁第四十九頁,共71頁。RecordSet對象的主要屬性BOF:布爾值,如果結(jié)果集中記錄的當前行指針移到了第一條記錄的前邊,則此值為真,否則為假。EOF:布爾值,如果結(jié)果集中記錄的當前行指針移到了最后一條記錄的后邊,則此值為真,否則為假。RecordCount:存放結(jié)果集中的記錄個數(shù)。Sort:將結(jié)果集中的記錄按某個字段排序。AbsolutePosition:記錄當前行記錄在結(jié)果集中的順序號,結(jié)果集記錄序號從1開始。ActiveCommand:結(jié)果集中創(chuàng)建的命令。ActiveConnection:結(jié)果集中創(chuàng)建的連接。Bookmark:結(jié)果集中當前行記錄的標識號。Fields:結(jié)果集中的字段集合。由于一行記錄可以包含多個字段,因此Fields屬性是一個數(shù)組形式,數(shù)組中的每個元素代表一個字段。第50頁/共70頁第五十頁,共71頁。Fields對象屬性Fields屬性本身也是一個對象,它直接指向ADO對象模型中的Fields對象。Fields對象用下述屬性來描述結(jié)果集字段的信息:Fields.Name:字段名稱。Fields.Value:字段的值。Fields.OrdinalPosition:字段在Fields集合中的順序。Fields.Type:字段的數(shù)據(jù)類型。Fields.Size:字段的最大字節(jié)數(shù)。Fields.SourceTable:字段來自的表Fields.SourceField:字段來自的表中的列第51頁/共70頁第五十一頁,共71頁。RecordSet對象的主要方法RecordSet對象的方法是實現(xiàn)結(jié)果集操作的關(guān)鍵。Move方法組AddNew方法Update方法Delete方法CancelUpdate方法Find方法第52頁/共70頁第五十二頁,共71頁。Move方法組Move方法組就是實現(xiàn)在結(jié)果集中通過移動記錄行指針而瀏覽數(shù)據(jù)的方法。Move方法組中又包括四個相應(yīng)的移動指針的方法。MoveFirst方法:將當前行記錄指針移到結(jié)果集中的第一行。MovePrevious方法:將當前行記錄指針向前移動一行。MoveNext方法:將當前行記錄指針向后移動一行。MoveLast方法:將當前行記錄指針移到結(jié)果集中的最后一行。第53頁/共70頁第五十三頁,共71頁。AddNew方法AddNew方法用于在結(jié)果集中添加一個新記錄。注意,當使用AddNew方法時,實際上只是在內(nèi)存中開辟了一個新記錄的緩沖區(qū),緩沖區(qū)中的初始值均為控,新輸入的記錄被保存在這個緩沖區(qū)中。要使緩沖區(qū)中新輸入的記錄永久地保存到數(shù)據(jù)庫中,還必須使用Update方法,或者對當前行記錄指針作一個移動操作。第54頁/共70頁第五十四頁,共71頁。Update方法Update方法將新記錄緩沖區(qū)中的記錄或者對當前記錄的修改真正寫到數(shù)據(jù)庫中,使新添加的記錄或修改后的結(jié)果被永久保存在數(shù)據(jù)庫中。第55頁/共70頁第五十五頁,共71頁。Delete方法Delete方法刪除結(jié)果集中當前行記錄指針所指的記錄,并且這個刪除是直接對數(shù)據(jù)庫數(shù)據(jù)操作的,刪除后的數(shù)據(jù)不可恢復。因此,在使用此方法刪除數(shù)據(jù)前,最好提示用戶是否真的要刪除數(shù)據(jù),以避免由于誤操作而造成數(shù)據(jù)丟失。第56頁/共70頁第五十六頁,共71頁。CancelUpdate方法CancelUpdate方法用于取消新添加的記錄或?qū)Ξ斍坝涗浰龅男薷摹W⒁?,此方法?yīng)在調(diào)用Update方法之前調(diào)用,調(diào)用了Update方法之后的修改是不能撤銷的。另外需要注意的是,如果沒有添加新記錄,也沒有對當前記錄進行任何修改,則調(diào)用CancelUpdate方法將產(chǎn)出錯誤。第57頁/共70頁第五十七頁,共71頁。Find方法Find方法用于在當前結(jié)果集中查找滿足條件的記錄。如果結(jié)果集較大,則可以使用此方法在結(jié)果集快速定位找到滿足要求的記錄。Find方法的格式為:
ADODC控件名.Recordset.Find(“查找條件表達式”)“查找條件表達式”中可以包含比較運算符、邏輯運算符和Like查找符。例如:查找年齡在20到25之間的學生:
Find(“Sage>=20ANDSage<=25”)第58頁/共70頁第五十八頁,共71頁。數(shù)據(jù)綁定控件數(shù)據(jù)綁定控件概念數(shù)據(jù)綁定控件分類數(shù)據(jù)綁定控件的主要屬性DataGrid控件
第59頁/共70頁第五十九頁,共71頁。數(shù)據(jù)綁定控件概念數(shù)據(jù)綁定實際上就是將結(jié)果集中的數(shù)據(jù)同應(yīng)用程序界面中的控件聯(lián)系起來,通過這些界面上的控件將結(jié)果集中的數(shù)據(jù)顯示給用戶。能夠?qū)崿F(xiàn)將結(jié)果集中的數(shù)據(jù)顯示出來的功能的控件就稱為數(shù)據(jù)綁定控件。數(shù)據(jù)綁定控件不但可以實現(xiàn)將結(jié)果集中的數(shù)據(jù)顯示出來,而且用戶還可以通過這些控件實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的增、刪、改操作。第60頁/共70頁第六十頁,共71頁。數(shù)據(jù)綁定控件分類標準控件
常用的有:TextBox、CheckBox、ListBox、ComboBox等。這些控件只用于顯示結(jié)果集中的一個列的值,因此,除了需要設(shè)置這些控件的DataSource屬性,還需要設(shè)置這些控件的DataField屬性,以確定綁定到結(jié)果集中的哪個列。
ActiveX控件
主要有:DataCombo、DataList、DataGrid、MSHFGrid、MicrosoftChart等。第61頁/共70頁第六十一頁,共71頁。數(shù)據(jù)綁定控件的主要屬性數(shù)據(jù)綁定控件主要通過兩個屬性來實現(xiàn)數(shù)據(jù)綁定,這兩個屬性是:DataSource和DataField屬性。DataSource屬性用于指定要綁定
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人股權(quán)轉(zhuǎn)讓協(xié)議書范本4篇
- 2025年度綠色環(huán)保店鋪租賃及設(shè)施共建合同
- 2025版時尚服飾銷售合同模板(含季節(jié)性折扣)
- 2025年度個人別墅租賃合同模板2篇
- 2025年度環(huán)保工程監(jiān)理服務(wù)合同范本
- 2025年度商鋪買賣合同(含商業(yè)配套移交協(xié)議)4篇
- 2025-2030全球魚雷泵行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國賽車運動駕駛模擬器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2024年臨床醫(yī)師定期考核試題中醫(yī)知識題庫及答案(共330題) (二)
- 2024年七年級語文下冊期末專項復習:記敘文閱讀
- 公司發(fā)展能力提升方案
- 電梯安全守則及乘客須知
- 你好法語第七課課件
- IT硬件系統(tǒng)集成項目質(zhì)量管理方案
- 《容幼穎悟》2020年江蘇泰州中考文言文閱讀真題(含答案與翻譯)
- 水上水下作業(yè)應(yīng)急預案
- API520-安全閥計算PART1(中文版)
- 2023年廣東省廣州地鐵城際鐵路崗位招聘筆試參考題庫附帶答案詳解
- 商務(wù)提成辦法
- 直流電機電樞繞組簡介
- GB/T 19889.5-2006聲學建筑和建筑構(gòu)件隔聲測量第5部分:外墻構(gòu)件和外墻空氣聲隔聲的現(xiàn)場測量
評論
0/150
提交評論