版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第16章 ADO與數(shù)據(jù)綁定控件,16.1 ADO數(shù)據(jù)控件 16.2 數(shù)據(jù)綁定控件 16.3 ADO對(duì)象,16.1 ADO數(shù)據(jù)控件,ADO數(shù)據(jù)控件是目前流行的數(shù)據(jù)訪問(wèn)控件,它支持OLE DB數(shù)據(jù)訪問(wèn)模型。 使用ADO數(shù)據(jù)訪問(wèn)控件,除了可以訪問(wèn)大型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)和小型個(gè)人數(shù)據(jù)庫(kù)管理系統(tǒng)。 ADO數(shù)據(jù)控件是ActiveX控件,需要手工將其添加到工具箱中。 選擇“工程”菜單下的“部件” 。,Adodc控件在窗體上的形式,ADO數(shù)據(jù)控件的主要屬性,ConnectionString屬性 用于建立與數(shù)據(jù)源的連接 CommandType屬性 指明命令的類型,共有四種 RecordSource屬性 用于設(shè)
2、置ADO結(jié)果集的內(nèi)容 MaxRecords屬性 決定結(jié)果集中的記錄的最大數(shù)目 Recordset屬性 用于存放從數(shù)據(jù)提供者那里獲得的查詢結(jié)果,ConnectionString屬性,單擊ADO數(shù)據(jù)控件屬性頁(yè)中的“ConnectionString”屬性,然后單擊 按鈕,CommandType屬性,adCmdUnknown:默認(rèn)值。表示RecordSource中的命令類型未知。 adCmdTable:RecordSource屬性的內(nèi)容是一個(gè)表名。 adCmdText:RecordSource屬性的內(nèi)容是一個(gè)查詢語(yǔ)句文本串。 adCmdStoredProc:RecordSource屬性的內(nèi)容是一個(gè)存儲(chǔ)
3、過(guò)程名。,RecordSource屬性,用于設(shè)置ADO結(jié)果集的內(nèi)容. 這個(gè)內(nèi)容可以來(lái)自于一張表,也可以來(lái)自一個(gè)查詢語(yǔ)句,也可以來(lái)自一個(gè)存儲(chǔ)過(guò)程的執(zhí)行結(jié)果。 RecordSource屬性的值與CommandType屬性的值有關(guān),兩者協(xié)同使用。,設(shè)置RecordSource屬性,在已經(jīng)設(shè)置好ConnectionString屬性的ADO數(shù)據(jù)控件上右擊鼠標(biāo),在彈出的菜單中選擇“ADODC屬性”命令,在彈出此對(duì)話框上選擇“記錄源”標(biāo)簽頁(yè)。,MaxRecords屬性,決定了結(jié)果集中的記錄的最大數(shù)目。 這個(gè)屬性取值大小取決于所檢索的記錄的大小以及計(jì)算機(jī)的可用資源(內(nèi)存)的多少。,Recordset屬性,是A
4、DO數(shù)據(jù)控件中實(shí)現(xiàn)數(shù)據(jù)記錄操作的最重要的屬性,而且這個(gè)屬性本身又是一個(gè)對(duì)象,也有自己的屬性和方法,它直接指向ADO對(duì)象模型中的Recordset對(duì)象。 Recordset屬性也稱為記錄集或結(jié)果集,用于存放從數(shù)據(jù)提供者那里獲得的查詢結(jié)果,這個(gè)結(jié)果一般存放在客戶端內(nèi)存中。,ADO數(shù)據(jù)控件的主要方法,Refresh 用于更新ADO數(shù)據(jù)控件屬性,使修改后的ADO數(shù)據(jù)控件屬性生效。 當(dāng)修改了ADO數(shù)據(jù)控件的ConnectionString屬性的值時(shí),使用Refresh方法會(huì)重新連接一次數(shù)據(jù)庫(kù); 當(dāng)修改了ADO數(shù)據(jù)控件的RecordSource屬性的值時(shí),使用Refresh方法會(huì)重新執(zhí)行RecordSou
5、rce屬性的內(nèi)容,重新產(chǎn)生結(jié)果集。 使用Refresh方法的格式為: ADO數(shù)據(jù)控件名.Refresh,ADO數(shù)據(jù)控件的主要事件,EndOfRecordset事件 當(dāng)在結(jié)果集中移動(dòng)記錄指針時(shí),當(dāng)記錄指針超出了結(jié)果集的最后一條記錄時(shí),觸發(fā)此事件。 Error事件 只有在沒(méi)有執(zhí)行任何VB代碼而發(fā)生了一個(gè)數(shù)據(jù)訪問(wèn)錯(cuò)誤時(shí),才會(huì)觸發(fā)此事件。 WillChangeField和FieldChangeComplete事件 當(dāng)對(duì)結(jié)果集中的一個(gè)或多個(gè)字段值進(jìn)行修改前,觸發(fā)WillChangeField事件;當(dāng)對(duì)結(jié)果集中的一個(gè)或多個(gè)字段值修改之后,觸發(fā)FieldChangeComplete事件。,ADO數(shù)據(jù)控件的主
6、要事件(續(xù)),WillChangeRecord和RecordChangeComplete事件 當(dāng)對(duì)結(jié)果集中的一個(gè)或多個(gè)記錄進(jìn)行修改前,觸發(fā)WillChangeRecord事件;當(dāng)對(duì)結(jié)果集中的一個(gè)或多個(gè)記錄修改之后,觸發(fā)RecordChangeComplete事件。 WillMove事件和MoveComplete事件 在結(jié)果集的當(dāng)前行記錄指針移動(dòng)之前,觸發(fā)WillMove事件;在結(jié)果集的當(dāng)前行記錄指針移動(dòng)完成后,觸發(fā)MoveComplete事件。,RecordSet對(duì)象的主要屬性,BOF:布爾值,如果結(jié)果集中記錄的當(dāng)前行指針移到了第一條記錄的前邊,則此值為真,否則為假。 EOF:布爾值,如果結(jié)果
7、集中記錄的當(dāng)前行指針移到了最后一條記錄的后邊,則此值為真,否則為假。 RecordCount:存放結(jié)果集中的記錄個(gè)數(shù)。 Sort:將結(jié)果集中的記錄按某個(gè)字段排序。,RecordSet對(duì)象的主要屬性(續(xù)),AbsolutePosition:記錄當(dāng)前行記錄在結(jié)果集中的順序號(hào),結(jié)果集記錄序號(hào)從1開(kāi)始。 ActiveCommand:結(jié)果集中創(chuàng)建的命令。 ActiveConnection:結(jié)果集中創(chuàng)建的連接。 Bookmark:結(jié)果集中當(dāng)前行記錄的標(biāo)識(shí)號(hào)。 Fields:結(jié)果集中的字段集合。,Fields對(duì)象的主要屬性,Fields.Name:字段名稱。 Fields.Value:字段的值。 Field
8、s.OrdinalPosition:字段在Fields集合中的順序。 Fields.Type:字段的數(shù)據(jù)類型。 Fields.Size:字段的最大字節(jié)數(shù)。 Fields.SourceTable:字段來(lái)自的表 Fields.SourceField:字段來(lái)自的表中的列,示例,例:利用Fields對(duì)象,得到當(dāng)前行記錄的某字段的值,用法如下: Fields(“字段名”).Value 或: Fields(數(shù)字).Value,RecordSet對(duì)象的主要方法,1. Move方法組 MoveFirst方法:將當(dāng)前行記錄指針移到結(jié)果集中的第一行。 MovePrevious方法:將當(dāng)前行記錄指針向前移動(dòng)一行。
9、MoveNext方法:將當(dāng)前行記錄指針向后移動(dòng)一行。 MoveLast方法:將當(dāng)前行記錄指針移到結(jié)果集中的最后一行。,RecordSet對(duì)象的主要方法(續(xù)),2AddNew方法 用于在結(jié)果集中添加一個(gè)新記錄。 3Update方法 將新記錄緩沖區(qū)中的記錄或者對(duì)當(dāng)前記錄的修改真正寫到數(shù)據(jù)庫(kù)中。 4Delete方法 刪除結(jié)果集中當(dāng)前行記錄指針?biāo)傅挠涗?,并且這個(gè)刪除是直接對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)操作的,刪除后的數(shù)據(jù)不可恢復(fù)。,RecordSet對(duì)象的主要方法(續(xù)),5CancelUpdate方法 用于取消新添加的記錄或?qū)Ξ?dāng)前記錄所做的修改。 6. Find方法 用于在當(dāng)前結(jié)果集中查找滿足條件的記錄。 Find方
10、法的格式為: ADO數(shù)據(jù)控件名.Recordset. Find(“查找條件表達(dá)式”) 例: 查找年齡在20到25之間的學(xué)生: Find(“Sage = 20 AND Sage = 25”),16.2 數(shù)據(jù)綁定控件,數(shù)據(jù)綁定實(shí)際上就是將結(jié)果集中的數(shù)據(jù)同應(yīng)用程序界面上的控件聯(lián)系起來(lái),通過(guò)這些界面上的控件將結(jié)果集中的數(shù)據(jù)顯示給用戶。 能夠?qū)崿F(xiàn)將結(jié)果集中的數(shù)據(jù)顯示出來(lái)的功能的控件就稱為數(shù)據(jù)綁定控件。 標(biāo)準(zhǔn)綁定控件:TextBox、CheckBox、ListBox、ComboBox等 外部綁定控件:DataCombo、DataList、DataGrid、MSHFGrid、Microsoft Chart等
11、,DataGrid控件,正式名稱是:Microsoft DataGrid Control 6(OLE DB), 以表格的形式顯示結(jié)果集中的全部數(shù)據(jù), 并允許用戶在此控件中瀏覽、添加、刪除和修改記錄。 需手工添加到工具箱中。,DataGrid控件的特殊屬性,1“通用”選項(xiàng)卡 允許添加(AllowAddNew屬性):允許添加新記錄。 允許刪除(AllowDelete屬性):允許刪除記錄。 允許更新(AllowUpdate屬性):允許更改記錄。 列標(biāo)頭(ColumnHeaders屬性):決定是否顯示字段名。 有效(Enabled屬性):決定運(yùn)行時(shí)能夠?qū)ataGrid控件進(jìn)行操作,如移動(dòng)數(shù)據(jù)區(qū)滾動(dòng)條
12、等。,DataGrid控件的特殊屬性(續(xù)),2. “鍵盤”選項(xiàng)卡 用于控制控件的瀏覽屬性?!霸试S箭頭”(AllowArrow屬性,默認(rèn))使光標(biāo)可以在列和行間移動(dòng)。 如果選擇了“自動(dòng)換行單元指針”(WrapCellPointer屬性)復(fù)選框,則可以用光標(biāo)控制鍵或Tab鍵來(lái)移動(dòng)光標(biāo),從當(dāng)前記錄的最后一列移到下個(gè)記錄的第一列。 如果設(shè)置了“Tab動(dòng)作鍵”(TabAction屬性)為“2-dbgGridNavigation”,則可以使用Tab鍵瀏覽記錄。,DataGrid控件的特殊屬性(續(xù)),3“列”選項(xiàng)卡 提供了在設(shè)計(jì)模式下對(duì)DataGrid控件中列集合的控制,通過(guò)此頁(yè)可以為每個(gè)列集合對(duì)象設(shè)置標(biāo)題和
13、DataGrid的屬性值。 通常的做法是通過(guò)改變“標(biāo)題”(Caption屬性)使列的標(biāo)題可讀性更好。,DataGrid控件的特殊屬性(續(xù)),4. “布局”選項(xiàng)卡 用于設(shè)置附加的列屬性,其最重要的特征是可以設(shè)置列的對(duì)齊方式和寬度。 “鎖定”(Locked)復(fù)選框用于防止值被修改; 不選中“允許調(diào)整大小”(AllowSizing)復(fù)選框可以防止改變列的寬度; 不選中“可見(jiàn)”(Visible)復(fù)選框可以隱藏列; 選中“自動(dòng)換行”(WrapText)復(fù)選框可以寫多行文本; 選中“按鈕”(Button)復(fù)選框可加入一個(gè)下拉式的按鈕列表。,DataGrid控件的特殊屬性(續(xù)),5. “顏色”選項(xiàng)卡 用于設(shè)
14、置列標(biāo)題以及控件的其他部分的前景色和背景色,是從Visual Basic 6屬性窗口中的前景色和背景色條目復(fù)制過(guò)來(lái)的。 6“字體”選項(xiàng)卡 可以有選擇的設(shè)置列標(biāo)題以及DataGrid控件體的字體、大小及屬性。,DataGrid控件的特殊屬性(續(xù)),7“拆分”選項(xiàng)卡 用于把DataGrid中的一列分割成多列,以方便對(duì)列中的數(shù)據(jù)進(jìn)行滾動(dòng)查看。 8“格式”選項(xiàng)卡 可以指定每個(gè)獨(dú)立列的數(shù)據(jù)類型,如把記錄價(jià)格的列指定為“貨幣”類型,對(duì)文本列采用默認(rèn)的“通用”類型,對(duì)數(shù)字列指定為“數(shù)字” 類型,并指明相應(yīng)的小數(shù)位數(shù),等等。,DataGrid控件的特殊屬性、方法和事件,使用HeadClick事件對(duì)列進(jìn)行排序
15、例:對(duì)單擊的列進(jìn)行降序排序。 Private Sub DtgStudent_HeadClick(ByVal ColIndex As Integer) With Adodc1.Recordset .Sort = .Fields(ColIndex).Name UID = LoginID; PWD= password 使用OLE DB提供者連接數(shù)據(jù)庫(kù) adoCn.ConnectionString = Provider=SQLOLEDB.1;User ID=LoginID; Initial Catalog=Pubs;Data Source=DB_Server_Name,使用Connection對(duì)象(續(xù)
16、),(2)使用Open方法建立連接 Open方法用于打開(kāi)連接: adoCn.Open (3)使用Close方法斷開(kāi)連接 用于關(guān)閉一個(gè)打開(kāi)的Connection對(duì)象,即斷開(kāi)與數(shù)據(jù)源的連接。 adoCn.Close,16.3.2 Command對(duì)象,Command對(duì)象代表對(duì)數(shù)據(jù)源執(zhí)行的命令。 使用Command命令可以查詢數(shù)據(jù),并將查詢結(jié)果返回給RecordSet對(duì)象。,Command對(duì)象的主要屬性,ActiveConnection:指定當(dāng)前使用的連接。 CommandText:命令的文本表達(dá)(SQL語(yǔ)句、存儲(chǔ)過(guò)程名和表名)。 CommandType:指定要執(zhí)行的命令的類型,與CommandTex
17、t屬性的內(nèi)容對(duì)應(yīng)。取值如下: CmdText:指定CommandText的內(nèi)容是一個(gè)SQL語(yǔ)句。 adCmdTable:指定CommandText的內(nèi)容是一個(gè)表名。 adCmdStoredProc:指定CommandText的內(nèi)容是一個(gè)存儲(chǔ)過(guò)程名。 adCmdUnknown:默認(rèn)值,表示命令類型未知。,Command對(duì)象的主要屬性(續(xù)),CommandTimeout 數(shù)據(jù)源作出響應(yīng)的最長(zhǎng)等待秒數(shù)。 Name 表示Command對(duì)象的字符串。 State 表示對(duì)象是打開(kāi)、關(guān)閉、正在執(zhí)行某一命令和獲取記錄時(shí)的狀態(tài)常量,其取值同Connection對(duì)象的State屬性。,Command對(duì)象的主要方法
18、,Excute 執(zhí)行CommandText屬性中指定的命令并返回由此生成的記錄集。 CreateParameter 創(chuàng)建一個(gè)與命令相關(guān)的新的參數(shù)對(duì)象。,Command對(duì)象的主要集合,Parameters 與Command對(duì)象相關(guān)的Parameter對(duì)象的集合。 Properties 描述Command對(duì)象相關(guān)的Property對(duì)象的集合。,使用Command對(duì)象,聲明對(duì)象 Dim adoCn As ADODB.Connection Dim adoCm As ADODB.Command 建立連接 Set adoCn = New ADODB.Connection adoCn.ConnectionS
19、tring = Provider=SQLOLEDB.1;User ID=LoginID; _ Data Source=DB_Server_Name adoCn.Open,使用Command對(duì)象(續(xù)),執(zhí)行命令 Set adoCm = New ADODB.Command Set adoCm.ActiveConnection = adoCn adoCm.CommandText = select * from authors adoCm.Execute 使用Command對(duì)象名執(zhí)行命令 adoCm.Name = SelAuthors Set adoCm.ActiveConnection = adoC
20、n adoCm.CommandText = select * from authors adoCn.SelAuthors 用名字執(zhí)行命令,16.3.3 Recordset對(duì)象,代表從數(shù)據(jù)提供者那里獲取的數(shù)據(jù)記錄集。 Recordset對(duì)象的主要功能包括: 建立記錄集; 確定要操作的記錄集中的記錄; 通過(guò)移動(dòng)指針瀏覽記錄; 對(duì)記錄集中的數(shù)據(jù)執(zhí)行更改操作; 對(duì)記錄集中的數(shù)據(jù)進(jìn)行過(guò)濾。,Recordset對(duì)象的主要屬性,AbsolutePosition:記錄集中當(dāng)前記錄的順序位置。 ActiveCommand:記錄集中創(chuàng)建的命令。 ActiveConnection:記錄集中創(chuàng)建的連接。 BOF:如果
21、當(dāng)前行移動(dòng)到記錄集的第一條記錄的前邊,則為真。 EOF:如果當(dāng)前行移動(dòng)到記錄集的最后一行記錄的后邊,則為真。 Bookmark:記錄集中當(dāng)前記錄的唯一標(biāo)識(shí)。 DataSource:指定要綁定的數(shù)據(jù)源。,Recordset對(duì)象的主要屬性(續(xù)),EditMode:表示當(dāng)前記錄是否正在被編輯,這個(gè)值可以是adEditNone、adEditInProgress、adEditAdd和adEditDelete。 Filter:允許用戶選擇記錄集中的部分?jǐn)?shù)據(jù)進(jìn)行操作。其使用方法為: Recordset對(duì)象名.Filter = 選擇表達(dá)式 其中“選擇表達(dá)式”的寫法同SELECT語(yǔ)句中的WHERE子句。 釋放過(guò)
22、濾的語(yǔ)句為: Recordset對(duì)象名.Filter = adFilterNone,Recordset對(duì)象的主要屬性(續(xù)),MaxRecords:記錄集中能返回的最多記錄數(shù)。 RecordCount:記錄集中記錄的個(gè)數(shù)。如果ADO不能判斷記錄集有多少條記錄,可以返回adUnknown(-1)。 Sort:將記錄集按指定字段排序。 Source:記錄集來(lái)源的命令和SQL查詢。 CursorLocation:描述記錄集中使用的游標(biāo)的位置的常量。 CursorType:描述記錄集中使用的游標(biāo)類型的常量。 LockType:控制編輯過(guò)程中設(shè)置的加鎖類型。,Recordset對(duì)象的主要方法,AddNew
23、:向記錄集中添加一條新記錄。 CancelUpdat:取消對(duì)數(shù)據(jù)的修改。 Close:關(guān)閉記錄集。 Delete:刪除當(dāng)前記錄。 Find:查找符合某些規(guī)則的記錄。 Move:將當(dāng)前記錄的位置移動(dòng)一定的間隔。,Recordset對(duì)象的主要方法(續(xù)),MoveFirst:移動(dòng)到第一條記錄。 MoveLast:移動(dòng)到最后一條記錄 MoveNext:移動(dòng)到下一條記錄。 MovePrevious:移動(dòng)到上一條記錄 Open:打開(kāi)一個(gè)記錄集。 Update:當(dāng)Edit和AddNew方法完成后要執(zhí)行的方法。 UpdateBatch:在一個(gè)游標(biāo)中當(dāng)批量處理完成后要執(zhí)行的方法。,Recordset對(duì)象的主要事
24、件,EndOfRecordset 當(dāng)記錄集中因沒(méi)有更多的記錄,而引起MoveNext方法執(zhí)行失敗時(shí)產(chǎn)生的事件。 FieldChangeComplete 當(dāng)字段中的值被改變后產(chǎn)生的事件。 RecordsetChangeComplete 當(dāng)對(duì)記錄集所做的修改被執(zhí)行時(shí)產(chǎn)生的事件。,Recordset對(duì)象的主要事件(續(xù)),WillChangeField 一個(gè)Field對(duì)象的值被改變前產(chǎn)生的事件。 WillChangeRecord 一個(gè)列被改變之前產(chǎn)生的事件。 WillChangeRecordset 記錄集中的修改都完成前產(chǎn)生的事件。 WillMove 記錄指針重新定位前產(chǎn)生的事件。,Recordset
25、對(duì)象的集合,Recordset對(duì)象包含的集合是Fields,它是記錄集中的字段集合。,CursorLocation屬性,用于設(shè)置游標(biāo)的位置,該屬性的取值為: adUseClient:使用本地客戶端游標(biāo)。其特點(diǎn)是服務(wù)器將整個(gè)結(jié)果集傳回給客戶端,網(wǎng)絡(luò)流量較大,但下載后對(duì)數(shù)據(jù)的瀏覽速度快。 adUseServer:默認(rèn)值。使用數(shù)據(jù)源提供的服務(wù)器端游標(biāo)。其特點(diǎn)是僅傳送客戶端需要的記錄,網(wǎng)絡(luò)流量小,但服務(wù)器資源消耗大。不支持Bookmark和AbsolutePosition等屬性。,CursorType屬性,用于指定Recordset對(duì)象希望執(zhí)行的動(dòng)作。 ADO Recordset對(duì)象支持四種游標(biāo)類型:
26、 動(dòng)態(tài)游標(biāo)(adOpenDynamic) 靜態(tài)游標(biāo)(adOpenStatic) 鍵集游標(biāo)(adOpenKeyset) 僅向前游標(biāo)(adOpenForwardonly),LockType屬性,用于設(shè)置多用戶情況下記錄集中的記錄的鎖定方式,用于保證各用戶間的操作互不干擾。 其取值有: adLockReadOnly:默認(rèn)值,不能編輯記錄集中的數(shù)據(jù)。 adLockPessimistic:悲觀鎖。 adLockOptimistic:樂(lè)觀鎖。 adLockBatchOptimistic:適用于使用UpdateBatch方法更新批量多條記錄的記錄集。,使用Recordset對(duì)象的步驟,(1)打開(kāi)記錄集 使用
27、Command對(duì)象的Execute方法創(chuàng)建Recordset對(duì)象: Set adoRecordset = adoCommand.Execute 使用Connection對(duì)象的Execute方法創(chuàng)建Recordset對(duì)象: Set adoRecordset = adoConnection.Execute(select * from authors) 直接使用Recordset對(duì)象的Open方法創(chuàng)建Recordset對(duì)象: adoRecordset.Open,Recordset對(duì)象的Open方法,語(yǔ)法格式為: Recordset.Open Source, ActiveConnection, Cur
28、sorType, LockType, Options 所有這些選項(xiàng)都是可選的,可以在調(diào)用Open方法之前,通過(guò)設(shè)置這些選項(xiàng)對(duì)應(yīng)的屬性來(lái)設(shè)置其值。 Source選項(xiàng)指定了要從哪里獲取數(shù)據(jù),其有: 一個(gè)返回記錄的Command對(duì)象。 SQL語(yǔ)句。 表名。 存儲(chǔ)過(guò)程名。,Open方法的一些選項(xiàng),ActiveConnection選項(xiàng)指定了要使用的ADO連接,這個(gè)選項(xiàng)可以是一個(gè)已打開(kāi)的Connection對(duì)象,也可以是一個(gè)連接字符串。 Options選項(xiàng)為提供者提供了附加信息。這些選項(xiàng)包括: adCmdUnknown:默認(rèn)值。不向提供者提供附加信息。 adCmdText:告訴提供者CommandText
29、屬性是文本命令。 adCmdTable:是表的名字。 adCmdStoredProc:是存儲(chǔ)過(guò)程名。 adCmdFile:是一個(gè)文件名。,示例,Dim adoRs As ADODB.Recordset Set adoRs = New ADODB.Recordset adoRs.ActiveConnection = adoCn adoRs.CursorType = adOpenForwardOnly adoRs.CursorLocation = adUseClient adoRs.Source = authors adoRs.Open , , , , adCmdTable,16.3.4 Fiel
30、d對(duì)象,Field對(duì)象表示記錄集中數(shù)據(jù)的某個(gè)單獨(dú)的列。 一旦獲得了記錄集,通常接下來(lái)就是使用Fields集合來(lái)讀取記錄集中的數(shù)據(jù)。 由于Fields集合是Recordset對(duì)象的默認(rèn)屬性,因此,在使用時(shí)可以省略此名稱。例如: Recordset.Fields(0).Value Recordset(0),Field對(duì)象的主要屬性,ActualSize 字段中實(shí)際存儲(chǔ)的數(shù)據(jù)尺寸。 DefinedSize 字段能存儲(chǔ)的最大數(shù)據(jù)量。 Name 字段的名稱。 NumericScale 十進(jìn)制小數(shù)點(diǎn)右邊的位數(shù)。,Field對(duì)象的主要屬性(續(xù)),OriginalValue 在其他用戶改變字段之前字段的值。
31、Precision 十進(jìn)制小數(shù)的精度。 Type 描述字段的數(shù)據(jù)類型的常量。 Value 字段中存儲(chǔ)的數(shù)據(jù)。,使用Field對(duì)象,Private Sub cmdGo_Click() 演示引用Fields字段值的不同方法 Dim adoCn As ADODB.Connection Dim adoRs As ADODB.Recordset Dim adoFld As ADODB.Field 打開(kāi)一個(gè)recordset,訪問(wèn)SQL Server自帶的Northwind數(shù)據(jù)庫(kù)中的Customers表 Set adoCn = New ADODB.Connection adoCn.Open provide
32、r = SQLOLEDB.1;Data Source=(local); User ID = sa; Initial Catalog=Northwind Set adoRs = New ADODB.Recordset adoRs.Open Customers, adoCn,使用Field對(duì)象(續(xù)),下述幾種對(duì)字段的訪問(wèn)方法效果是一樣的 使用字段的索引,明確寫出集合的名字 lboResults.AddItem adoRs.Fields(0).Value lboResults.AddItem adoRs.Fields(0) 使用字段的索引,使用默認(rèn)屬性 lboResults.AddItem adoR
33、s(0).Value lboResults.AddItem adoRs(0),使用Field對(duì)象(續(xù)),使用字段的名字,明確寫出集合的名字 lboResults.AddItem adoRs.Fields(CustomerID).Value lboResults.AddItem adoRs.Fields(CustomerID) 使用字段的名字,使用默認(rèn)屬性 lboResults.AddItem adoRs(CustomerID).Value lboResults.AddItem adoRs(CustomerID) End Sub,16.3.5 Parameter對(duì)象,Parameter對(duì)象表示C
34、ommad對(duì)象的一個(gè)獨(dú)立參數(shù)。 這個(gè)對(duì)象是SQL查詢時(shí)的一個(gè)運(yùn)行參數(shù),或者是存儲(chǔ)過(guò)程中的輸入或輸出參數(shù)。 大多數(shù)情況下,參數(shù)用于各種類型的參數(shù)化命令中。,Parameter對(duì)象的主要屬性,Direction:表示一個(gè)參數(shù)是輸入?yún)?shù)還是輸出參數(shù)。 Name:參數(shù)的名稱。 NumericScale:十進(jìn)制小數(shù)點(diǎn)右邊的位數(shù)。 Precision:十進(jìn)制小數(shù)的精度。 Properties:描述這個(gè)參數(shù)的Property對(duì)象的集合。 Type:參數(shù)的數(shù)據(jù)類型。 Value:參數(shù)的當(dāng)前值。,使用Parameter對(duì)象,Private Sub cmdGetParameters_Click() 獲得指定的存儲(chǔ)
35、過(guò)程的參數(shù) Dim adoCm As ADODB.Command Dim adoPrm As ADODB.Parameter Dim adoRs As ADODB.Recordset Set adoCm = New ADODB.Command Set adoCm.ActiveConnection = adoCn adoCm.CommandText = reptq3 pubs數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程名 adoCm.CommandType = adCmdStoredProc adoCm.Parameters.Refresh 獲得存儲(chǔ)過(guò)程參數(shù),使用Parameter對(duì)象(續(xù)),填充Parameters中的
36、每個(gè)參數(shù) For Each adoPrm In adoCm.Parameters If adoPrm.Direction = adParamInput Then adoPrm.Value = InputBox(adoPrm.Name, enter parameter value) End If Next adoPrm 從存儲(chǔ)過(guò)程得到記錄集 Set adoRs = adoCm.Execute . End Sub,16.3.7 Property對(duì)象,ADO 對(duì)象有兩種類型的屬性:內(nèi)置屬性和動(dòng)態(tài)屬性。 內(nèi)置屬性是在ADO中實(shí)現(xiàn)并立即可用于任何新對(duì)象的屬性,并使用“對(duì)象名.Property”語(yǔ)法來(lái)得到和設(shè)置屬性值。 動(dòng)態(tài)屬性由基本的數(shù)據(jù)提供者定義,并出現(xiàn)在相應(yīng)的ADO對(duì)象的Properties集合中。,Property對(duì)象,動(dòng)態(tài)屬性只能通過(guò)集合使用“對(duì)象名.Properties(0)” 或“對(duì)象名.Properties(Name)”語(yǔ)法來(lái)引用。 Property對(duì)象有四個(gè)屬性: Name:標(biāo)識(shí)屬性的字符串。 Type:用于指定屬性數(shù)據(jù)類型的整數(shù)。 Value:包含設(shè)置屬性的值。 Attributes:指示特定于提供者的屬性特征的長(zhǎng)整型值。,Error對(duì)象,Error對(duì)象記錄數(shù)據(jù)操作過(guò)程中所發(fā)生的錯(cuò)誤信息。 由于數(shù)據(jù)訪問(wèn)可能會(huì)引起多個(gè)錯(cuò)誤,因此,Error對(duì)象是包含在一個(gè)E
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年阜陽(yáng)幼兒師范高等??茖W(xué)校高職單招職業(yè)適應(yīng)性考試備考試題帶答案解析
- 2026年安徽商貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考試題帶答案解析
- 2026年合肥財(cái)經(jīng)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫(kù)有答案解析
- 2026年廣東舞蹈戲劇職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)筆試備考試題帶答案解析
- 土地合作開(kāi)發(fā)協(xié)議2025年資金投入
- 2026年蚌埠學(xué)院高職單招職業(yè)適應(yīng)性考試模擬試題帶答案解析
- 2026年湖北科技學(xué)院繼續(xù)教育學(xué)院?jiǎn)握芯C合素質(zhì)考試備考試題帶答案解析
- 2026年海南經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考試題帶答案解析
- 2026年安徽揚(yáng)子職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試模擬試題有答案解析
- 2026年蚌埠學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 專題11 圓(安徽專用)5年(2021-2025)中考1年模擬《數(shù)學(xué)》真題分類匯編
- 工程春節(jié)停復(fù)工方案(3篇)
- 社區(qū)基金使用管理辦法
- WST856-2025安全注射標(biāo)準(zhǔn)解讀
- 星間激光鏈路構(gòu)建-洞察及研究
- “十三五”規(guī)劃重點(diǎn)-銻礦石及精銻項(xiàng)目建議書(立項(xiàng)報(bào)告)
- 環(huán)衛(wèi)公司內(nèi)部管理制度
- 第3章 同位素示蹤技術(shù)課件
- 創(chuàng)傷骨科患者深靜脈血栓形成篩查與治療的專家共識(shí)
- x線胸片診斷試題及答案
- GB/T 17554.1-2025卡及身份識(shí)別安全設(shè)備測(cè)試方法第1部分:一般特性
評(píng)論
0/150
提交評(píng)論