vb中adodc控件和data控件有什么区别

ADO Data 控件


ADO Data 控件使用 Microsoft ActiveX 数据对象(ADO) 来快速建立数据绑定的控件和数据提供者之间的连接。数据绑定控件是任何具有“数据源”属性的控件。数据提供者可以是任何符合 OLEDB 规范的数据源。使用 Visual Basic 的类模块也可以很方便地创建子集的数据提供者。

尽管可以在应用程序中直接使用 ActiveX 数据对象,但 ADO Data 控件有作为一个图形控件的优势(具有“向前”和“向后”按钮),以及一个易于使用的界面,使您可以用最少的代码创建数据库应用程序。

图 7.4    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 数据链接名称(Data Link Name)(.MDL) 必须是在您的机器上创建的。请参阅“创建 Northwind 的OLE DB Data Link”,以获得一个循序渐进的示例。

要创建一个简单的前端数据库应用程序

窗体上放置一个 ADO Data 控件。(该图标的工具提示为 "ADODC"。)
如果该控件不在“工具箱”中,请按 CTRL+T 键,显示“部件”对话框。在这个“部件”对话框中,单击“Microsoft ADO Data Control”。

在“工具箱”中,单击选定“ADO 数据控件”。然后按 F4 键显示“属性”窗口。


在“属性”窗口中,单击“ConnectionString”显示“ConnectionString”对话框。


如果您已经创建了一个 Microsoft 数据链接文件(Data Link file)(.UDL),请选择“使用 OLE DB 文件”并单击“浏览”,以找到计算机上的文件。如果使用 DSN,则单击“使用 ODBC 数据源名”,并从框中选择一个 DSN,或单击“新建”创建一个。如果想创建一个连接字符串,请选择“使用 ConnectionString”,单击“生成”,然后使用“数据链接属性”对话框创建一个连接字符串。在创建连接字符串后,单击“确定”。ConnectionString 属性将使用一个类似于下面这一行的字符串来填充:
driver={SQL Server};server=bigsmile;uid=sa;pwd=pwd;database=pubs

在“属性”窗口中,将“记录源”属性设置为一个 SQL 语句。例如:
SELECT * FROM Titles WHERE AuthorID = 72

在访问一个表时,应始终包括一个 WHERE 子句。如果这样做失败,则会锁定整个表,这样对其他用户将是一个严重的障碍。

在窗体上再放置一个“文本框”控件,用来显示数据库信息。


在其“属性”窗口中,将 Text1 的“数据源”属性设为 ADO Data 控件的名称 (ADODC1)。这样就将这个文本框和 ADO Data 控件绑定在一起。


在其“属性”窗口中,单击“数据字段”将下拉得到一个可用的字段列表。单击所要显示的字段的名称。


对希望访问的其它每个字段重复第 6、7、8 步。


按 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”。




Data 控件
                     

使用三种类型的 Recordset 对象中的任何一种来提供对存储在数据库中数据的访问。Data 控件允许从一个记录移动到另一个记录,并显示和操纵来自被连结的控件的记录的数据。如果没有 Data 控件或等价的数据源控件,比如 RemoteData 控件,窗体上的被连结数据觉察控件不能自动访问数据。

语法

Data

说明

可以使用 Data 控件来执行大部分数据访问操作,而根本不用编写代码。与 Data 控件相连结的数据觉察控件自动显示来自当前记录的一个或多个字段的数据,或者,在某些情况下,显示来自当前记录旁边的一个记录集合中的一个或者多个字段中的数据。Data 控件在当前记录上执行所有操作。

如果 Data 控件被指示移动到一个不同的记录,则所有被连结的控件自动把当前记录的任何改变传递给 Data 控件以保存在数据库中。Data 控件移动到被指定的记录,同时把当前记录中的数据传回被连结的控件,并在那里显示。

Data 控件自动处理一些意外事件包括空记录集,添加新记录,编辑和更新现有记录,处理某些类型的错误。然而,在更复杂的应用程序里,则需要捕获 Data 控件不能处理的某些错误类型。例如,当 Microsoft Jet 数据库引擎访问数据文件有问题、没有权限或不能按照代码执行查询时,会导致可捕获的错误。如果错误发生在应用过程开始之前或由于某些内部错误,Error 事件被触发。

被连结的控件
当与 Data 控件相连结时,DataList、 DataCombo、 DataGrid,和 MSHFlexGrid 控件都能管理记录集合。所有这些控件都允许一次显示或操作几个记录。

内部的 Picture、Label、TextBox、CheckBox、Image、OLE、ListBox 和 ComboBox 控件也是数据觉察的,能和由 Data 控件管理的 Recordset 的一个字段相连结。其它的数据觉察控件,如 MaskedEdit 和 RichTextBox 控件,可以在专业版和企业版中得到,也可以由第三方提供。

操作
一旦应用程序开始,Visual Basic 就用 Data 控件属性打开选定的数据库,创建 Database 对象和创建 Recorset 对象。Data 控件的 Database 和 Recordset 属性引用新创建的,可独立于 Data 控件操作的 Database 和 Recorset 对象— 带有或没有被连结的控件。Data 控件在其所在窗体的初始化 Form_Load 事件之前被初始化。在初始化阶段中发生任何错误都将导致一个不可捕获的错误。

当 Visual Basic 用 Jet Database 引擎创建一个 Recordset 时,其它的 Visual Basic 操作或事件只能等到该操作完成后才能发生。然而,在 Recordset 创建过程中允许其它基于 Windows 的应用程序继续执行。当 Jet 引擎创建 Recordset 时,按 CTRL+BREAK 键,操作将被终止,导致一个可捕获的错误,而 Data 控件的 Recordset 属性被设置成 Nothing。在设计时内,第二次按 CTRL+BREAK 键会使 Visual Basic 显示 Debug 窗口。

当使用 Data 控件创建 Recordset 对象或用代码创建 Recordset 对象并把它赋值给 Data 控件时,Microsoft Jet 数据库引擎会自动移居到 Recordset 对象上。其结果为,书签(对于快照类型的 Recordset 对象,记录集数据)被保存在局部内存中,用户不必操纵 Data 控件,也不必在代码中调用 MoveLast 方法。用于创建 Recordset 的页面锁也被释放得更快,以使其它的 Recordset 对象能访问相同的数据。在代码中创建但是没有赋值给 Data 控件的 Recordset 对象不能自动被 Jet 引擎移居。请通过代码移居这些对象。由于 Data 控件以后台方式移居它的 Recordset,所以附加的 Recordset 可能被创建。

可以用鼠标操纵 Data 控件,由一个记录移动到另一个记录或移动到 Recordset 的开始或结尾。EOFAction 和 BOFAction 属性决定了当用户使用鼠标移动到 Recordset 的开始或结尾时将发生的事情。不能将焦点置于 Data 控件上。

有效性检查
使用 Validate 事件和 DataChanged 属性对写入数据库的记录执行合法性检查。

数据访问对象
在过程中可以使用由 Data 控件创建的 Database 和 Recordset 数据访问对象。每个 Database 和 Recorset 对象都有自己的属性和方法,可以编写使用这些属性和方法的过程来操纵数据。

例如,Recorset 对象的 MoveNext 方法把当前记录移动到 Recordset 中的下一个记录。要调用这个方法,可以使用此代码:

Data1.Recordset.MoveNext

Data 控件能访问 Jet 引擎 3.0 版中三种 Recorset 对象的任何一种。如果不选择记录集类型,则 dynaset 型的 Recordset 被创建。

在许多情况下,创建的 Recorset 对象的缺省类型和配置效率不是很高。也就是说,可能不需要一个具有可更新的,支持全屏滚动的,keyset 类型的光标访问数据。例如,一个只读的,只能向前的,快照类型的 Recordset 创建起来可能比缺省光标快得多。就现有情况尽可能选择最有效的类型、Exclusive、Options 和 ReadOnly 属性。

注意 使用 Data 控件时用于决定 Recordset 类型的常数不同于用于确定的已创建的 Recorset 类型的或者用来以 OpenRecordset 方法创建 Recorset 对象的常数。

为选择特定的 Recordset 类型,把 Data 控件的 V 属性设成:

Recordset 类型 值 常数
表 0 vbRSTypeTable
Dynaset 1 (缺省)vbRSTypeDynaset
快照 2 vbRSTypeSnapshot


重点 Data 控件不能用于访问通过 dbForwardOnly 选项位设置创建的 Recorset 对象。

专业版和企业版
就数据访问而言,Visual Basic 的学习版、专业版和企业版间的主要差别是创建新数据访问对象的能力。在学习版中,不能在代码中声明(带有 Dim 关键字的)变量为数据访问对象。这意味着只有 Data 控件能创建 Database 和 Recorset 对象。

在专业版和企业版中,可以创建新的 Recordset 对象并把它赋值给 Data 控件的 Recordset 属性。任何和 Data 控件相连的被连结的控件允许在创建的 Recordset 中操纵记录。要保证被连结的控件的 DataField 属性赋值给在新的 Recordset 中合法的字段名。

存储的查询
当使用 Data 控件时,另外一个重要选项是执行存储的查询的能力。如果事先创建 QueryDef 对象,Data 控件能执行它并用 QueryDef 对象保存的 SQL、Connect 和其它属性创建 Recordset。为了执行 QueryDef,请把 Data 控件的 RecordSource 属性设置成 QueryDef 的名字并使用 Refresh 方法。

如果所保存的 QueryDef 包含参数,则需要建立 Recordset 并把它传递给 Data 控件。

BOF/EOF 处理
当遇到无记录的 Recordset 时,Data 控件也能处理所发生的情况。通过改变 EOFAction 属性,可以通过对 Data 控件编程以自动进入 AddNew 模式。

通过使用 Align 属性,能对 Data 控件编程以使它自动移动到它父窗体的顶部或底部。在任何一种情况下,当父窗体改变大小时,Data 控件水平地改变以大小适应父窗体的宽度。该属性允许 Data 控件放在 MDI 窗体中而不必包含 Picture 控件。


 

你可能感兴趣的:(职场,vb,休闲)