使用ADOData控件
ADOData控制項使用MicrosoftActiveX資料物件(ADO)來快速建立資料綁定的控制項和資料提供者之間的連線。資料綁定控制項是任何具有「資料來源」屬性的控制項。資料提供者可以是任何符合OLEDB規範的資料來源。使用VisualBasic的類別模組也可以很方便地建立子集的資料提供者。
儘管可以在應用程式中直接使用ActiveX資料對象,但ADOData控制項有作為一個圖形控制項的優勢(具有“向前”和“向後”按鈕),以及一個易於使用的介面,使您可以用最少的程式碼建立資料庫應用程式。
在VisualBasic的「工具箱」中,不少控制項都可以作為資料綁定的控件,包括核取方塊、組合方塊、圖像、標籤、列錶框、圖片方塊以及文字方塊控制項等。此外,VisualBasic還包含了若干種資料綁定的ActiveX控件,諸如DataGrid、DataCombo、Chart以及DataList控件等。使用者也可以建立自己的資料綁定的ActiveX控件,或從其他開發人員購買控件。
VisualBasic先前的版本提供了內在的Data控制項和RemoteData控制項(RDC)來進行資料存取。這兩種控制項仍包括在VisualBasic中,以提供向後相容。不過,因為ADO的適應性更廣,因此建議使用者使用ADOData控制項來建立新的資料庫應用程式。
詳細資訊關於資料綁定的控制項的完整清單位於「綁定到ADOData控制項的控制項」中。若要了解如何使用這些內在的Data控件或RemoteData控件,請參閱「使用Data控件」或「使用RemoteData控件」。關於建立資料提供者的詳細信息,請參閱「建立資料識別類別」。
可能的用法
連接一個本地資料庫或遠端資料庫。
開啟一個指定的資料庫表,或定義一個基於結構化查詢語言(SQL)的查詢、或預存程序、或該資料庫中的表的視圖的記錄集合。
將資料欄位的數值傳遞給資料綁定的控件,可以在這些控件中顯示或變更這些數值。
新增的記錄,或根據對顯示在綁定的控制項中的資料的任何變更來更新資料庫。
若要建立客戶或前端資料庫應用程序,應在窗體中新增ADOData控件,以及其它所需的任何VisualBasic控制項。可根據您的需求在表單中放置多個ADOData控制項。不過,請注意,這種控制是一種相當「昂貴」的創建連接的方法,應在第一個控制項至少有兩個連接,且以後的每個控制項至少多一個連接時使用。
用最少的程式碼建立一個前端資料庫應用程式
透過在設計時設定一些屬性,可以用最少的程式碼來建立一個資料庫應用程式。如果正在使用OLEDB資料來源,則對應的Microsoft資料連結名稱(DataLinkName)(.MDL)必須是在您的機器上建立的。請參閱“建立Northwind的OLEDBDataLink”,以取得一個循序漸進的範例。
要建立一個簡單的前端資料庫應用程式:
1.在窗體上放置ADOData控制項(該圖示的工具提示為ADODC)如果該控制項不在「工具箱」中,請按CTRL T鍵,顯示「部件」對話方塊。在這個「部件」對話方塊中,按一下「MicrosoftADODataControl」。
2.在「工具箱」中,按一下選定「ADOData控制項」。然後按F4鍵顯示「屬性」視窗。
3.在「屬性」視窗中,按一下「ConnectionString」顯示「ConnectionString」對話框。
4.如果您已經建立了一個Microsoft資料連結檔案(DataLinkfile)(.MDL),請選擇“使用OLEDB檔案”並按一下“瀏覽”,以找到電腦上的檔案。如果使用DSN,則按一下“使用ODBC資料來源名稱”,並從方塊中選擇DSN,或按一下“新建”以建立一個。如果想要建立一個連接字串,請選擇“使用ConnectionString”,按一下“產生”,然後使用“資料連結屬性”對話方塊建立連接字串。在建立連接字串後,按一下「確定」。 ConnectionString屬性將使用一個類似下面這一行的字串來填充:
driver={SQLServer};server=bigsmile;uid=sa;pwd=pwd;database=pubs
5.在「屬性」視窗中,將「記錄來源」屬性設定為一個SQL語句。例如:SELECT*FROMTitlesWHEREAuthorID=72在存取一個表格時,應始終包含一個WHERE子句。如果這樣做失敗,則會鎖定整個表,這樣對其他用戶將是一個嚴重的障礙。
6.在窗體上再放置一個「文字方塊」控件,用來顯示資料庫資訊。
7.在其「屬性」視窗中,Text1的「資料來源」屬性設為ADOData控制項的名稱(ADODC1)。這樣就將這個文字方塊和ADOData控制項綁在一起。
8.在其「屬性」視窗中,按一下「資料欄位」將下拉可獲得一個可用的欄位清單。按一下所要顯示的欄位的名稱。
9.對希望存取的其它每個欄位重複第6、7、8步。
10.按F5鍵運行該應用程式。使用者可以在ADOData控制項中使用四個箭頭按鈕,從而允許使用者到達資料的開始、記錄的末尾或在資料內從一個記錄移動到另一個記錄。
在程式中設定ConnectionString、Source、DataSource以及DataField下面的程式碼示範如何在程式中設定這四個屬性。注意設定DataSource屬性要使用Set語句。
PRivateSubForm_Load()
WithADODC1
.ConnectionString=driver={SQLServer};&_
server=bigsmile;uid=sa;pwd=pwd;database=pubs
.RecordSource=Select*FromTitlesWhereAuthorID=7
EndWith
SetText1.DataSource=ADODC1
Text1.DataField=Title
EndSub
ADOData控制項的事件
ADOData控制項提供了若干個可以編程的事件。下表說明了這些事件及其何時產生,不過這個表不是一個關於這些事件何時發生的所有條件的完整清單。更完整的信息,請參閱各事件的參考主題。
詳細資訊如果試圖循序漸進地使用ADOData控件,請參閱“使用DataGrid和ADO資料控制項建立一個簡單的資料庫應用程式”,“建立一個簡單的DataCombo應用程式”以及“建立一個連接DataList控件的DataGrid”。
設定ADOData控制項的與資料庫相關的屬性
當建立連線時,您可以使用下列三種來源之一:一個連接字串,一個OLEDB檔案(.MDL),或一個ODBC資料來源名稱(DSN)。當您使用DSN時,則無須變更控制項的任何其它屬性。
不過,如果對資料庫技術比較了解,可以更改在ADOData控制項中出現的其它的一些屬性。下面的清單說明了該控制項的與資料庫相關的一些屬性。這個列表同時也建議了設定這些屬性的邏輯順序。
注意資料庫技術是比較複雜的,下列的建議並不代表一定要視為規則。
1.ConnectionString—ConnectionString屬性是一個字串,可以包含進行一個連線所需的所有設定值。在該字串中所傳遞的參數是與驅動程式相關的。例如,ODBC驅動程式允許該字串包含驅動程式、提供者、預設的資料庫、伺服器、使用者名稱以及密碼等。
2.UserName—使用者的名稱,當資料庫受密碼保護時,需要指定該屬性。和Provider屬性類似,這個屬性可以在ConnectionString中指定。如果同時提供了一個ConnectionString屬性以及一個UserName屬性,則ConnnectionString中的值將會覆寫UserName屬性的值。
3.PassWord—在存取受保護的資料庫時也是必需的。和Provider屬性、UserName屬性類似,如果在ConnectionString屬性中指定了密碼,則會覆寫在這個屬性中指定的值。
4.RecordSource—這個屬性通常包含一條語句,用來決定從資料庫檢索什麼資訊。
5.CommandType—CommandType屬性告訴資料提供者Source屬性是一條SQL語句、一個表格的名稱、一個預存程序還是一個未知的類型。
6.CursorLocation—這個屬性指定遊標的位置,是位於客戶還是位於伺服器
上。這個決策將影響您對下面幾個屬性的設定。
7.CursorType—CursorType屬性決定記錄集是靜態型別、動態型別、還是鍵集遊標類型。
8.LockType—LockType屬性決定當其他人試圖變更您正在編輯的資料時,如何鎖定該資料。如何設定這個LockType屬性是一個複雜的決策,取決於多個因素。
9.Mode—Mode屬性決定想用記錄集進行什麼操作。例如,如果只是想要建立一個報告,可以將該屬性設為唯讀來獲得效能的改善。
10.MaxRecords—這個屬性決定遊標的大小。如何決定這個屬性的值取決於所檢索的記錄的大小,以及電腦的可用資源(記憶體)的數量。一個大的記錄(包括很多列以及長字串)比小記錄要花費更多的資源。因此,MaxRecords屬性就不能太大。
11.ConnectionTimeout—設定等待建立一個連線的時間,以秒為單位。如果連線逾時,則傳回錯誤。
12.CacheSize—CacheSize屬性指定從遊標中可以檢索多少筆記錄。如果將CursorLocation設為客戶端,則這個屬性只能設為一個較小的數目(可能為1),不會有任何不利的影響。如果遊標的位置位於伺服器端,則可以對這個數進行調整,將其設為你希望一次可以查看的行數。例如,如果使用DataGrid控制項來查看30行,則可以將CacheSize設為60,這樣不必擷取更多的資料就可以進行捲動。
13.BOFAction、EOFAction—這兩個屬性決定當該控制項位於遊標的開始和結尾時的行為。提供的選項包括停留在開始或結尾、移動到第一個或最後一個記錄、或新增一個記錄(只能在末尾)。
綁定到ADOData控件的控件
任何具有DataSource屬性的控制項都可以綁定到一個ADOData控制項。下面的內在控制項都可以綁定到ADOData控制項:
複選框(CheckBox)
組合方塊(ComboBox)
影像(Image)
標籤(Label)
列錶框(ListBox)
圖片框(PictureBox)
文字方塊(TextBox)
VisualBasic的所有版本中也提供下述資料綁定的ActiveX控制項:
DataList
DataCombo
DataGrid
MicrosoftHierarchicalFlexGrid
RichTextBox
MicrosoftChart
DateTimePicker
ImageCombo
MonthView
最後,使用者可以使用DataBinding物件建立自己的資料綁定的ActiveX控制項。
詳細資訊有關自行建立資料綁定控制項的詳細內容,請參閱「建立資料綁定使用者控制項」。
->