使用ADO Data控件
ADO Data控件使用MicrosoftActiveX数据对象(ADO)来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合OLE DB规范的数据源。使用Visual Basic的类模块也可以很方便地创建子集的数据提供者。
尽管可以在应用程序中直接使用ActiveX数据对象,但ADO Data控件有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使您可以用最少的代码创建数据库应用程序。
在Visual Basic的“工具箱”中,不少控件都可以作为数据绑定的控件,包括复选框、组合框、图像、标签、列表框、图片框以及文本框控件等。此外,Visual Basic还包括了若干种数据绑定的ActiveX控件,诸如DataGrid、DataCombo、Chart以及 DataList控件等。用户也可以创建自己的数据绑定的ActiveX控件,或从其他开发商购买控件。
Visual Basic以前的版本提供了内在的 Data 控件和 Remote Data 控件(RDC) 来进行数据访问。这两种控件仍包括在 Visual Basic中,以提供向后兼容。不过,因为 ADO 的适应性更广,因此建议用户使用ADO Data控件来创建新的数据库应用程序。
详细信息 关于数据绑定的控件的完整列表位于“绑定到ADO Data控件的控件”中。要了解如何使用这些内在的Data 控件或 Remote Data 控件,请参阅“使用 Data 控件”或“使用 Remote Data 控件”。关于创建数据提供者的详细信息,请参阅“创建数据识别类”。
可能的用法
连接一个本地数据库或远程数据库。
打开一个指定的数据库表,或定义一个基于结构化查询语言 (SQL) 的查询、或存储过程、或该数据库中的表的视图的记录集合。
将数据字段的数值传递给数据绑定的控件,可以在这些控件中显示或更改这些数值。
添加新的记录,或根据对显示在绑定的控件中的数据的任何更改来更新一个数据库。
要创建一个客户或前端数据库应用程序,应在窗体中添加ADO Data控件,以及其它所需要的任何 Visual Basic控件。可以根据您的需要在窗体中放置多个ADO Data控件。不过,请注意,这种控件是一种相当“昂贵”的创建连接的方法,应在第一个控件至少有两个连接,且以后的每个控件至少多一个连接时使用。
用最少的代码创建一个前端数据库应用程序
通过在设计时设置一些属性,可以用最少的代码来创建一个数据库应用程序。如果正在使用OLE DB 数据源,则相应的Microsoft 数据链接名称(DataLink Name)(.MDL) 必须是在您的机器上创建的。请参阅“创建 Northwind的OLE DB Data Link”,以获得一个循序渐进的示例。
要创建一个简单的前端数据库应用程序:
1. 在窗体上放置一个ADO Data控件(该图标的工具提示为 "ADODC")如果该控件不在“工具箱”中,请按 CTRL+T 键,显示“部件”对话框。在这个“部件”对话框中,单击“MicrosoftADO DataControl”。
2. 在“工具箱”中,单击选定“ADO Data控件”。然后按 F4 键显示“属性”窗口。
3. 在“属性”窗口中,单击“ConnectionString”显示“ConnectionString”对话框。
4. 如果您已经创建了一个 Microsoft 数据链接文件(Data Link file)(.MDL),请选择“使用 OLE DB 文件”并单击“浏览”,以找到计算机上的文件。如果使用 DSN,则单击“使用 ODBC 数据源名”,并从框中选择一个 DSN,或单击“新建”创建一个。如果想创建一个连接字符串,请选择“使用 ConnectionString”,单击“生成”,然后使用“数据链接属性”对话框创建一个连接字符串。在创建连接字符串后,单击“确定”。ConnectionString 属性将使用一个类似于下面这一行的字符串来填充:
driver={SQL Server};server=bigsmile;uid=sa;pwd=pwd;database=pubs
5. 在“属性”窗口中,将“记录源”属性设置为一个 SQL 语句。例如:SELECT * FROM Titles WHERE AuthorID = 72在访问一个表时,应始终包括一个 WHERE 子句。如果这样做失败,则会锁定整个表,这样对其他用户将是一个严重的障碍。
6. 在窗体上再放置一个“文本框”控件,用来显示数据库信息。
7. 在其“属性”窗口中,将 Text1 的“数据源”属性设为ADO Data控件的名称 (ADODC1)。这样就将这个文本框和ADO Data控件绑定在一起。
8. 在其“属性”窗口中,单击“数据字段”将下拉得到一个可用的字段列表。单击所要显示的字段的名称。
9. 对希望访问的其它每个字段重复第 6、7、8 步。
10. 按 F5 键运行该应用程序。用户可以在ADO Data控件中使用四个箭头按钮,从而允许用户到达数据的开始、记录的末尾或在数据内从一个记录移动到另一个记录。
在程序中设置 ConnectionString、Source、DataSource以及 DataField下面的代码演示了如何在程序中设置这四个属性。注意设置 DataSource 属性要使用 Set 语句。
Private Sub Form_Load()
With ADODC1
.ConnectionString = "driver={SQL Server};" & _
"server=bigsmile;uid=sa;pwd=pwd;database=pubs"
. RecordSource = "Select * From Titles Where AuthorID = 7"
End With
Set Text1.DataSource = ADODC1
Text1.DataField = "Title"
End Sub
ADO Data 控件的事件
ADO Data控件提供了若干个可以编程的事件。下表说明了这些事件及其何时产生,不过这个表不是一个关于这些事件何时发生的所有条件的完整列表。更完整的信息,请参阅各个事件的参考主题。
详细信息 如果试图循序渐进地使用ADO Data控件,请参阅“使用DataGrid 和ADO数据控件创建一个简单的数据库应用程序”,“ 创建一个简单的DataCombo应用程序”以及“创建一个连接 DataList控件的DataGrid”。
设置ADO Data控件的与数据库相关的属性
当创建连接时,您可以使用下列三种源之一:一个连接字符串,一个 OLE DB文件(.MDL),或一个 ODBC 数据源名称(DSN)。当您使用 DSN 时,则无须更改控件的任何其它属性。
不过,如果对数据库技术比较了解,可以更改在ADO Data控件中出现的其它的一些属性。下面的列表说明了该控件的与数据库相关的一些属性。这个列表同时也建议了设置这些属性的逻辑顺序。
注意 数据库技术是比较复杂的,下列的建议并不意味着一定要视为规则。
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—这两个属性决定当该控件位于光标的开始和末尾时的行为。提供的选择包括停留在开始或末尾、移动到第一个或最后一个记录、或添加一个新记录(只能在末尾)。
绑定到ADO Data控件的控件
任何具有 DataSource 属性的控件都可以绑定到一个ADO Data控件。下面的内在控件都可以绑定到ADO Data控件:
复选框(CheckBox)
组合框(ComboBox)
图像(Image)
标签(Label)
列表框(ListBox)
图片框(PictureBox)
文本框(TextBox)
Visual Basic的所有版本中也提供下述数据绑定的ActiveX控件:
DataList
DataCombo
DataGrid
Microsoft Hierarchical FlexGrid
RichTextBox
Microsoft Chart
DateTimePicker
ImageCombo
MonthView
最后,用户可以使用DataBinding对象创建自己的数据绑定的ActiveX控件。
详细信息 关于自己创建数据绑定控件的详细内容,请参阅“创建数据绑定用户控件”。