.NET 数据提供程序用于访问存储在数据库中的数据。 本主题提供了在设计时刻和运行时刻绑定数据的概述和示例。 注意,也可以使用其他数据绑定方法。 请参阅 数据绑定概述 主题获得数据绑定方法的完整列表和总说明。
.NET 数据提供程序概述
要为数据库数据提供编辑器,必须创建三个对象。 首先需要一个连接对象来指定数据库位置和访问方法。 其次,必须创建一个数据适配器对象。 数据适配器在物理数据和数据集之间起桥接作用。 它们使用连接对象来访问数据库。 当数据适配器对象被创建和配置之后,可以生成一个 DataSet 对象 —— 最后需要创建的对象。 这个对象把数据实际应用于编辑器。
为了把编辑器绑定到数据集字段,需要把字段名称绑定到编辑器的 DataBindings 属性中的 EditValue 属性。
下面的插图举例说明了上面所述的绑定机制。
.NET 数据提供程序提供了对两种数据类型的访问。 这样,就有不同的连接和数据适配器对象。 OleDBConnection 和 OleDBDataAdapter 对象连接 OLE DB 公开的数据。 SqlConnection 和 SqlDataAdapter 对象使用由 Microsoft SQL Server version 7.0 或以上版本提供的数据源。
除非数据适配器装载了数据集,否则编辑器不显示绑定数据。 要达到此目的,需要调用数据适配器的 Fill 方法,并传递 DataSet 对象作为一个参数。 通常会在窗体的 Load 事件中执行此操作。
在修改了编辑器的取值时,所作的修改会被应用于绑定的数据集中,但不会保存到数据库。 要把所作的修改保存到数据库,你需要调用数据适配器的 Update 方法,把数据集作为一个参数进行传递。 更多关于访问数据和更新数据源的内容,请参阅 OleDBDataAdapter 和 SqlDataAdapter 类的说明。
在设计时刻把编辑器绑定到 MDB 表
按照上面的规定,绑定数据时应该创建三个对象。 当连接到 MDB 表时,需要 OleDBConnection 和 OleDBDataAdapter 对象。 将使用数据适配器生成 DataSet 对象。 创建连接对象时有两种可供选择的方法。 第一种是把一个 OleDBConnection 组件放置到窗体上并定制它。 另一种是使用 OleDBDataAdapter 组件的向导。 此向导能让您在配置数据适配器期间创建连接对象。 本主题使用第二种方法。
按照下列步骤,把一个文本编辑器绑定到源自 NWind 数据库的 Products 表的 ProductName 字段 (译者注:在 VS2005 中引入了 BindingSource 组件,可以简化对编辑器的绑定。 如果您使用的是 VS2005 以上版本,可以参阅相关资料,例如参阅 如何: 在 VS2005 中的设计时刻绑定控件到数据库 主题中的步骤 1-8 和步骤11) :
- 新建一个 Windows 应用程序项目。
-
在工具箱中双击 OleDBDataAdapter 组件。 在 Data Adapter Configuration Wizard(数据适配器配置向导) 对话框中单击 Next(下一步) 按钮。
-
单击 New Connection(新建连接)... 按钮来调用 Data Link Properties(数据链接属性) 对话框。
在对话框的 Provider(提供程序) 页面,选择 Microsoft Jet 4.0 OLE DB Provider 选项。 切换到 Connection(连接) 页面,并提供所需 MDB 文件的路径。 单击 OK(确定) 按钮来关闭对话框。
-
单击 Next(下一步) 按钮两次。 在编辑框中键入“SELECT * FROM Products”语句,并再次单击 Next(下一步) 按钮一次。
-
单击 Finish(完成) 按钮关闭向导。 结果,已配置的 OleDBConnection 和 OleDBDataAdapter 组件已经被添加到窗体中。
-
把一个 TextEdit 控件放置到窗体中,并把它的 DataBindings 属性的 EditValue 字段设置为数据集的 Products 表的 ProductName 字段。
-
在窗体的 Load 事件处理程序中编写下列代码行。
C# 复制代码 private void Form1_Load(object sender, System.EventArgs e) { oleDbDataAdapter1.Fill(dataSet11); }
Visual Basic 复制代码 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load OleDbDataAdapter1.Fill(DataSet11) End Sub
-
运行此应用程序。 TextEdit 控件显示了第一条记录的 ProductName 字段值。
在运行时刻把编辑器绑定到 MDB 表
下列代码可以用于把编辑器绑定到 NWind 数据库中 Products 表的 ProductName 字段。 运行结果与上述设计时刻示例的相同。
使用 DataBindings 属性及其 Add 方法,编辑器被绑定到数据源 (在本例中,数据源是“Products”表)。 此方法需要三个参数: 要绑定的属性名、数据表 (或数据视图) 和数据字段名称。
C# | 复制代码 |
---|---|
using System.Data.OleDb; // ... // creating a connection object OleDbConnection connection = new OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\\DBs\\NWIND.MDB"); // creating a data adapter OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM Products", connection); // creating and filling a dataset DataSet sourceDataSet = new DataSet(); adapter.Fill(sourceDataSet); // specifying the data source for the editor. textEdit1.DataBindings.Add("EditValue", dataSet11.Products, "ProductName", true); |
Visual Basic | 复制代码 |
---|---|
Imports System.Data.OleDb ' ... ' creating a connection object Dim Connection As New OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\DBs\NWIND.MDB") ' creating a data adapter Dim Adapter As New OleDbDataAdapter("SELECT * FROM Products", Connection) ' creating and filling a dataset Dim SourceDataSet As New DataSet() Adapter.Fill(SourceDataSet) ' specifying the data source for the editor. textEdit1.DataBindings.Add("EditValue", dataSet11.Products, "ProductName", True); |