使用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控件。
詳細信息關於自己創建數據綁定控件的詳細內容,請參閱“創建數據綁定用戶控件”。