《第8章数据源控件(修改增加内容了).pdf》由会员分享,可在线阅读,更多相关《第8章数据源控件(修改增加内容了).pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第八章 数据源控件 数据访问的关键在于安全和高效。ASP.NET 2.0 在提高数据访问安全和效率方面进行了卓有成效的改进,其中,最引人注目的就是使用数据源控件实现数据绑定技术。目前大多数企业应用程序都是在多层体系结构之上生成的,比较常见的是把 ASP.NET应用程序分为三个层:表示层、业务逻辑层和数据访问层。各层相对独立,可以单独修改,整个程序易于扩展、维护等。而通过数据源控件 ObjectDataSource 就可以轻松实现应用程序的三层结构。本章主要围绕 ASP.NET 2.0 中诸如 SqlDataSource、ObjectDataSource、AccessDataSource、Sit
2、eMapDataSource 等几个重要数据源控件的使用方法展开讨论。并就基于 ObjectDataSource数据源控件构建三层结构的技术实现进行重点讲述。8.1 数据源控件概述 上一章,我们多用手动编写代码的方式完成连接数据库,进行读写操作。显然,效率不高,且手动编码方式,很容易出错,安全性也不高。但是,若通过数据源控件、数据绑定控件等技术,就能够使得开发人员在不编写或者少编写代码的情况下完成数据访问、显示、编辑等等操作。数据源控件主要用于从不同的数据源获取数据,包括连接到数据源、使用 SQL 语句获取和管理数据等。数据源控件处理与数据源进行交互的所有低级操作,而且拥有智能化、更加自动化。
3、本质上说,数据源控件是对 ADO.NET 的进一步包装。表 8.1 列出了目前 ASP.NET2.0 提供的几个新的数据源控件:SqlDataSource、ObjectDataSource、XmlDataSource、AccessDataSource 和 SiteMapDataSource。它们都可以用来从它们各自类型的数据源中检索数据,并且可以绑定到各种数据绑定控件。数据源控件减少了为检索和绑定数据甚至对数据进行排序、分页或编辑而需要编写的自定义代码的数量。表 8.1 数据源控件列表 数据源控件 说 明 ObjectDataSource 允许您使用业务对象或其他类,并创建依赖于中间层对象来管
4、理数据的 Web 应用程序。SqlDataSource 使用连接字符串连接数据库,数据源可以是 SQL Server、Access、OLE DB、ODBC 或Oracle 等。AccessDataSource 数据源是 Microsoft Access 数据库。从 SqlDataSource 类继承而来。使用 Jet 4.0 OLE DB提供程序与数据库连接。XmlDataSource 数据源是 XML 文件,该 XML 文件对诸如 TreeView 或 Menu 控件等分层 ASP.NET 服务器控件极为有用。SiteMapDataSource 类似于 XmlDataSource,只是专门为
5、站点导航使用而做了优化。数据源默认是以.sitemap为扩展名的 XML 文件。每个数据源控件都具有类似的属性,以便与其各自的数据源进行交互。SiteMapDataSource 和 XmlDataSource 主要用于检索分层结构的数据。XmlDataSource 控件可以读取和写入 XML 数据,因此,可以通过某些控件(如 TreeView 和 Menu 控件)来使用该控件。SiteMapDataSource 控件使用 ASP.NET 站点地图,并提供站点导航数据。此控件通常与 Menu 控件一起使用。AccessDataSource 应用面比较窄,只能用于从 Access 数据库中检索数据
6、。比较常用的两个基本数据源控件是 SqlDataSource 和 ObjectDataSource。前者用于直接连接数据库,后者用于连接业务对象。SqlDataSource 看起来好像只能使用 SQL Server,但实际上可以用来从任何 OLE DB 或符合 ODBC 的数据源中检索数据。无论和什么样的数据源交互,数据源控件都提供了统一的基本编程模型和 API。只要学会一种数据源控件的使用方法,那么,类似的控件就能一同百通。8.2 SqlDataSource数据源控件 8.2.1 SqlDataSource 控件简介 SqlDataSource 控件应用非常广泛,该控件能够与多种常用的数据库
7、进行交互,包括 SQL Server、Access、OLE DB、ODBC 或 Oracle 等。在数据绑定控件的支持下,能够完成多种数据访问任务。1、SqlDataSource 控件常用属性:表 8.1 SqlDataSource控件的常用属性 属性 说 明 ConnectionString 用于获取或设置连接到数据库而使用的字符串,通常我们将连接字符串保存到Web.config文件中。EnableCaching 获取或设置一个布尔值,用于确定是否启用 SqlDataSource 控件的数据缓存功能,默认值是 true。ProviderName 获取或设置SqlDataSource 控件连接
8、数据源时所使用的提供程序名称。.NET 框架 包 含 了5个 提 供 程 序-System.Data.Odbc、System.Data.OleDb、System.Data.OracleClient、System.Data.SqlClient 和Microsoft.sqlServerCe.Client。默认值是 System.Data.SqlClient。InsertCommand 获取或设置用于为数据库添加数据记录的 SQL 语句或者存储过程。DeleteCommand 获取或设置用于为数据库删除数据记录的 SQL 语句或者存储过程。SelectCommand 获取或设置用于为数据库选择数据记
9、录的 SQL 语句或者存储过程。UpdateCommand 获取或设置用于为数据库更新数据记录的 SQL 语句或者存储过程。2、SqlDataSource 控件常用方法:表 8.2 SqlDataSource控件的常用方法 方法 说 明 Insert()根据 InsertCommand 及其参数,执行一个添加操作。Delete()根据 DeleteCommand 及其参数,执行一个删除操作。Select()根据 SelectCommand 及其参数,执行一个选择操作,从数据库中获取数据记录。Update()根据 UpdateCommand 及其参数,执行一个更新操作。3、SqlDataSour
10、ce 控件常用事件:表 8.2 SqlDataSource控件的常用事件 事件 说 明 Deleted 该事件在删除操作完成后发生。可用于验证删除操作的结果。Deleting 该事件在删除操作进行前发生。可用于取消删除操作。Inserted 该事件在添加操作完成后发生。可用于验证添加操作的结果。Inserting 该事件在添加操作进行前发生。可用于取消添加操作。Selected 该事件在选择操作完成后发生。可用于验证选择操作的结果。Selecting 该事件在选择操作进行前发生。可在相关事件处理程序中验证、修改参数值。Updateed 该事件在更新操作完成后发生。可用于验证更新操作的结果。Up
11、dating 该事件在更新操作进行前发生。可用于取消更新操作。8.2.2 SqlDataSource 控件应用示例 我们通过一个实例来演示如何通过 SqlDataSource 控件来获取并显示数据库中的数据。这里,为便于观察结果,我们借助数据绑定控件 GridView 控件在页面上来显示获取的数据。有关 GridView 控件的详细用法,在后面的小节里还会专门讨论。例 8.1 通过 SqlDataSource 控件检索数据库中的资料。1、使用 SqlDataSource 控件连接到数据库(1)首先在 Visual Studio 2005 中创建一个新网站,命名为 SQLDS,选择“文件系统”存
12、放方式。向导将自动生成一个 Default.aspx 的文件。(2)从工具箱中分别找到 SqlDataSource 和数据绑定控件 GridView,拖放到页面中适当的位置,如图 8.1 所示。如果 SqlDataSource 控件上没有显示“SqlDataSource 任务”快捷菜单,则用鼠标右键单击 SqlDataSource 控件,然后,在系统弹出的快捷菜单上选择“显示智能标记”。图 8.1 使用 SqlDataSource控件连接到数据库(3)单击“SqlDataSource 任务”菜单上的“配置数据源”,系统就会弹出“配置数据源”向导。其中,第一步就是选择数据连接,单击“新建连接”按
13、钮,即出现“添加连接”对话框,如图 8.2 所示。图 8.2“添加连接”对话框 在这里,数据源选项可以通过“更改”按钮选择:Microsoft SQL Server(SqlClient);服务器名设置为 localhost;因为 SQL Server 在本地,使用 Windows 身份验证即可;在“选择或输入一个数据库名”单选下拉框中,选择 Northwind;最后,单击“测试连接”,在确认该连接正确无误后,单击“确定”。(4)向导的下一步会询问是否将刚才定义好的连接字符串保存到 Web.config 文件中。与将连接字符串存储在页面中相比,将字符串存储在配置文件中能带来许多好处,如更安全且可
14、以重复使用,所以,我们勾选“是”,选择将连接字符串保存到 Web.config 文件中。然后单击“下一步”。(5)向导进入“配置 Select 语句”画面,如图 8.3 所示。图 8.3 “配置 Select语句”对话框 在这里,我们可以指定要从数据库中获取哪些数据。在“指定来自表或视图的列”下的“名称”下拉列表中,选择“Products”;在“列”下,勾选“ProductID”、“ProductName”、“SupplierID”、“CategoryID”字段。更复杂的定制 Select 语句,可以通过单击“WHERE”、“ORDER BY”、“高级”等按钮进行配置。(6)单击“下一步”,进
15、入“测试查询”画面。可以通过单击“测试查询”按钮进行测试以确保前面所做配置无误,获取的数据是所需数据。单击“完成”按钮。至此,使用 SqlDataSource 控件连接到数据库的配置任务完成。2、将 SqlDataSource 控件和数据绑定控件进行绑定(1)在页面设计窗体上选择 GridView 控件,如果未显示“GridView 任务”快捷菜单,同样用鼠标右键单击 GridView 控件,然后,在系统弹出的快捷菜单上选择“显示智能标记”。因为,前面已经配置好了 SqlDataSource 控件,所以直接在“选择数据源”列表框中选择已定义好的 SqlDataSource1 控件即可,如图 8
16、.4。图 8.4 设置 GridView控件的数据源 如果前面没有进行 SqlDataSource 控件的配置,在这里,可以通过在“选择数据源”列表框中选择“新建数据源”,系统会出现“数据源配置向导”对话框,如图 8.5 所示。图 8.5 “数据源配置向导”对话框 在这里,选择“数据库”获取数据,并单击“确定”按钮,随即就会出现“配置数据源”向导,后面的步骤就和前面的一样了。(2)将前面配置好的 SqlDataSource 控件设置为 GridView 控件的数据源,本质上就是将GridView 控件和SqlDataSource控件绑定到了一起。因此,GridView 控件将显示SqlData
17、Source控件返回的数据。图 8.6 是最后的运行结果画面。图 8.6 运行结果 通过上述示例,我们看到 SqlDataSource 数据源控件功能的强大,使用 SqlDataSource数据源控件,只需设置正确的连接字符串信息,定义简单的 SQL 语句,我们没有手写一行代码,甚至连数据提供程序都不需要定义,就实现了很复杂的功能。应当说明,SqlDataSource 数据源控件本质上是对 ADO.NET 托管数据提供程序的进一步包装。因为 ADO.NET 托管数据提供程序提供对 Microsoft SQL Server、OLE DB、ODBC 或 Oracle 等各类数据库的访问,所以 Sq
18、lDataSource 数据源控件能够从 ADO.NET 托管数据提供程序支持的数据源中检索数据。使用 SqlDataSource 数据源控件访问 ODBC、Oracle 等数据源的方法,大家可以参考上述例子,此处就不再赘述了。8.3 ObjectDataSource数据源控件 8.3.1 ObjectDataSource 控件简介 ObjectDataSource 控件是另外一个重要的数据源控件,和 SqlDataSource 控件用于直接连接数据库不同,ObjectDataSource 控件的数据源是一个符合一定规范的类(包含一些特殊的方法成员),因此,通常用来指定一个业务层的对象。为了讨
19、论 ObjectDataSource 控件,有必要简单回顾一下应用程序的 N 层结构这一概念。ASP.NET 应用程序开发中目前广泛使用 N 层结构来改善程序的可维护性以及代码的可重用性。最常用的是把 ASP.NET 应用程序分为三个层:表示层、业务逻辑层和数据访问层。各层相对独立,通过相应的接口,层与层之间进行信息的传递。其他 N 层结构都是三层结构的扩展版本。表示层:主要包含窗体、页面元素等用户界面部分。表示层首先实现与用户的交互,同时还需要事先从业务逻辑层获取数据。业务逻辑层:主要包括核心业务相关的逻辑,程序中大多将此部分封装在类中。业务逻辑层主要负责处理来自数据层的数据,实现系统的业务
20、功能,并将结果返回给表示层。数据访问层:主要包括数据存储和与它交互的组件或服务。显然,采用分层方式设计应用程序,使得每一层相对独立,可以单独修改,整个程序易于扩展、维护等等。但一般的数据源控件,如前述的 SqlDataSource 控件,却把表示层和业务逻辑层混合在了一起。这在应用程序规模较小、功能不复杂的情况下,还看不出有多大的缺陷。但当应用程序规模扩大,采用 SqlDataSource 这类控件的缺陷就明显化了。为此,ASP.NET 2.0 提供了一个专门的数据源控件 ObjectDataSource 控件,用于在表示层、业务逻辑层和数据访问层之间构建一座桥梁。包含 ObjectDataS
21、ource 控件的三层程序结构可用图 8.7 表示。图 8.7 包含 ObjectDataSource控件的三层程序结构 1、ObjectDataSource 控件常用属性:表 8.4 ObjectDataSource控件的常用属性 属性 说 明 EnableCaching 获取或设置一个布尔值,用于确定是否启用 ObjectDataSource 控件的数据缓存功能,默认值是 true。InsertMethod 获取或设置一个在控件中实现数据添加的方法名称,默认值为空。DeleteMethod 获取或设置一个在控件中实现数据删除的方法名称,默认值为空。SelectMethod 获取或设置一个在
22、控件中实现数据选择的方法名称,默认值为空。UpdateMethod 获取或设置一个在控件中实现数据更新的方法名称,默认值为空。CacheDuration 获取或设置由 SelectMethod 属性值所指定方法返回的缓存数据在内存中存储的时间。单位为妙,默认值为无限大。2、ObjectDataSource 控件常用方法:表 8.5 ObjectDataSource控件的常用方法 方法 说 明 Insert()根据 InsertMethod 指定的方法及其参数,执行一个添加操作。Delete()根据 DeleteMethod 指定的方法及其参数,执行一个删除操作。Select()根据 Selec
23、tMethod 指定的方法及其参数,执行一个选择操作,以实现从数据库中获取数据记录。Update()根据 UpdateMethod 指定的方法及其参数,执行一个更新操作。3、ObjectDataSource 控件常用事件:ObjectDataSource 控件常用事件和 SqlDataSource 控件的常用事件是一致的,主要包括Deleted、Deleting、Inserted、Inserting、Selected、Selecting、Updateed、Updating 等,具体含义,可以参阅表 8.4 所示。8.3.2 ObjectDataSource 控件应用示例 我们通过一个示例来演示
24、 ObjectDataSource 控件的用法。同样,为便于观察结果,我们借助数据绑定控件 GridView 控件在页面上来显示获取的数据。为在网站中集中连接数据库,建立集中连接数据库的类:Conn.CS。类中代码如下:public static SqlConnection CreateCon()/连接SQL Server 库 return new SqlConnection(Server=.;uid=sa;pwd=;database=S_Class);例 8.2 通过 ObjectDataSource 控件检索并更新SQL Server 数据库 Northwind 中 Products表中的
25、资料。因为 ObjectDataSource 控件将用户自己创建的对象绑定到数据控件中,所以,需要用户首先准备好用于表达业务逻辑的中间层,这里用一个类来表达。1、创建一个 Products 类(1)参考上一个示例,在 Visual Studio 2005 中创建一个新网站,命名为 ObjectDS。(2)右击“解决方案资源管理器”中对应项目位置,在系统弹出的快捷菜单中选择“添加新项”,如图 8.8 所示。图 8.8 在项目中添加新项 系统会显示出“添加新项”对话框,在对话框中,选择添加“类”,并将这个类命名为Products。一般情况下,因为是首次手工添加代码,系统会提示你将你将要建立的“类”
26、放在 App_Code 文件夹中,我们选择“是”即可。()系统自动打开 Products 类的代码窗体。因为是模版,所以大部分的固定内容系统一经自动生成,我们需要添加一个命名空间的:using System.Data.SqlClient。然后,在类中添加一个名为 GetProducts 方法成员。代码如下:public DataSet GetProducts()SqlConnection oCon=Conn.CreateCon();string strSql=SELECT ProductID,ProductName,SupplierID,CategoryID FROM Products;Sql
27、DataAdapter oDA=new SqlDataAdapter(strSql,oCon);DataSet oDS=new DataSet();oDA.Fill(oDS,Products);return oDS;根据前面我们所学知识,不难看懂这段代码的含义:通过定义一个 SqlConnection 连接对象 oCon 和一个 SqlDataAdapter 数据适配器对象 oDA,将 Northwind 数据库的 Products 表中所有记录取出并填充至内存中的 DataSet 对象 oDS 中,最后以 DataSet 形式返回。2、添加 ObjectDataSource 和 GridVi
28、ew 控件。(1)切换到主页面 Default.aspx 的设计视图,从工具箱中分别找到 ObjectDataSource 控件和数据绑定控件 GridView,拖放到页面中适当的位置,如图 8.9 所示。图 8.9添加 ObjectDataSource和 GridView控件 如果 ObjectDataSource 控件上没有显示“ObjectDataSource 任务”快捷菜单,则用鼠标右键单击 ObjectDataSource 控件,然后,在系统弹出的快捷菜单上选择“显示智能标记”。(2)单击“ObjectDataSource 任务”菜单上的“配置数据源”,系统就会弹出“配置数据源”向导
29、。首先,需要选择业务对象,如图 8.10 所示。在“选择业务对象”下拉列表中,可以看到我们刚刚定义好的一个类 Products 这一业务对象,选择它,并单击“下一步”按钮。图 8.10 选择业务对象(3)向导转入“定义数据方法”画面,如图 8.11 所示。我们已经在 Products 类中定义好了一个用于返回数据集对象的方法 GetProducts,所以,可以选择它。因为,我们在类 Products中并没有定义诸如 Update,Insert,Delete 等更复杂的 SQL 语句方法,所以,这里对应 Update,Insert,Delete 等选项为空。图 8.11 定义数据方法(4)单击“
30、完成”,结束 ObjectDataSource 控件配置数据源任务。(5)回到主页面 Default.aspx 的设计视图。在页面设计窗体上选择 GridView 控件,确保显示“GridView 任务”快 捷菜 单。在“选择 数据 源”列 表框 中选择 已定 义好的ObjectDataSource1 控件即可,如图 8.12。图 8.12 设置 GridView控件的数据源 这一步,我们实现了数据源于数据显示控件的绑定。实际上,到这一步,后面的操作就类似于上一个例子了。图 8.13 显示了最终的运行结果。图 8.13 运行结果 3、对记录进行编辑和修改(1)修改 Products 类 上述操
31、作仅仅是通过 ObjectDataSource 控件实现数据的读取,要想实现对数据记录的修改更新也不是难事。当然,同样需要在业务逻辑层进行必要的设置。打开前面定义好的 Products 类的代码窗体。在类中继续添加一个名为 UpdateProducts方法成员。代码如下:public void UpdateProduct(int productID,string productName,int SupplierID,int categoryID)SqlConnection oCon=Conn.CreateCon();string updateString=UPDATE Products set
32、 ProductName=ProductName,SupplierID=SupplierID,CategoryID=CategoryID where ProductID=ProductID;SqlCommand cmd=new SqlCommand(updateString,oCon);cmd.Parameters.AddWithValue(ProductID,productID);cmd.Parameters.AddWithValue(ProductName,productName);cmd.Parameters.AddWithValue(SupplierID,SupplierID);cmd
33、.Parameters.AddWithValue(CategoryID,categoryID);oCon.Open();cmd.ExecuteNonQuery();oCon.Close();这段代码也不是很麻烦,通过定义一个连接对象 oCon 和一个数据适配器对象 oDA,从数据库中提取资料并填充到数据集对象 oDS 中。然后,定义了一个数据行对象 DataRow,其字段结构等同于数据集对象 oDS 中刚刚填充好的数据表。定义 DataRow 对象的目的,是为了在内存中对其赋值,并最后通过 SqlCommandBuilder 对象将 DataRow 对象的值更新到对应数据库中。(2)重新配置
34、ObjectDataSource 对象和 GridView 对象 修改完 Products 类之后,再次回到主页面 Default.aspx 的设计视图,重新配置ObjectDataSource 对象和 GridView 对象。在 ObjectDataSource 对象配置数据源向导的“定义数据方法”步骤,点 UPDA TE 选项卡,就会发现此时可以选择已定义好的 UpdateProducts 方法了,我们选择它,如图 8.14 所示。然后,单击“完成”按钮,结束配置数据源工作。图 8.14 定义数据方法 选择 GridView 控件,选择其“GridView 任务”快捷菜单,会发现此时多出来
35、了一个选项“启用编辑”。我们依次勾选“启用分页”、“启用排序”、“启用编辑”,然后,运行程序,可观察到最终结果,图 8.15。图 8.15 运行结果 注意:要能够进行编辑、删除,你需要将 GridView 的 DataKeyNames 设置为数据库里的主键名。4、对记录进行删除(1)修改 Products 类 打开前面定义好的 Products 类的代码窗体。在类中继续添加一个名为DeleteProduct方法成员。代码如下:public void DeleteProduct(int ProductId)SqlConnection oCon=Conn.CreateCon();string de
36、leteString=DELETE FROM Products WHERE ProductID=ProductID;SqlCommand cmd=new SqlCommand(deleteString,oCon);cmd.Parameters.AddWithValue(ProductID,ProductId);oCon.Open();cmd.ExecuteNonQuery();oCon.Close();需要重新配置数据源。见下图:点击配置数据源,出现图:选择 DELETE(删除)方法即可。5、插入记录(1)修改 Products 类 打开前面定义好的 Products 类的代码窗体。在类中继续
37、添加一个名为InsertProduct方法成员。代码如下:public void InsertProduct(int productID,string productName,int SupplierID,int categoryID)SqlConnection oCon=Conn.CreateCon();string InsertString=INSERT INTO Products(ProductID,ProductName,SupplierID,CategoryID)VALUES(ProductID,ProductName,SupplierID,CategoryID);SqlComman
38、d cmd=new SqlCommand(InsertString,oCon);cmd.Parameters.AddWithValue(ProductID,productID);cmd.Parameters.AddWithValue(ProductName,productName);cmd.Parameters.AddWithValue(SupplierID,SupplierID);cmd.Parameters.AddWithValue(CategoryID,categoryID);oCon.Open();cmd.ExecuteNonQuery();oCon.Close();注意:该方法不能在
39、 GridView控件中使用了,因为无“插入”或“新建”按钮。可利用DetailView控件。配置数据源为“ObjectDataSource”数据源,选择”INSERT”项。在 DetailView控件的智能标示中选择“插入”选项。在 DetailView控件上显示“新建”按钮,可进行插入操作。8.4 AccessDataSource数据源控件 8.4.1 AccessDataSource 控件简介 Access 数据库是一种桌面级的数据库,当对应用程序性能,以及数据库性能要求不是很高,并且数据量不需很大时,可以考虑选择 Access 数据库。操作访问 Access 数据库有专门的数据源控件,
40、这就是 AccessDataSource。AccessDataSource 控件和前面讨论的 SqlDataSource 控件用法基本相同。不过,因为Access 数据库是以文件的形 式存在 于系统中 的,所 以和 SqlDataSource 主要采用ConnectionString 属性连接数据库不同,AccessDataSource 主要采用 DataFile 属性直接以文件地址的方式进行连接,也就是说,要连接 Access 数据库,则必须选择 Access 数据库文件。另外,SqlDataSource 控件中,设置数据提供程序名称的属性是 ProviderName 属性,该属性在 Sql
41、DataSource 中是一个可读可写属性,其属性值有多种选择,而在 AccessDataSource控件中 ProviderName 属性与其有很大的不同。AccessDataSource 控件的 ProviderName 属性被继承并重写,其值只能是 System.Data.OleDb。除了上面所述区别之外,AccessDataSource 控件和 SqlDataSource 控件使用模式基本相同。AccessDataSource 控件从 SqlDataSource 控件继承了大部分的属性、方法和事件。其定义和使用方法均没有改变,我们可以参阅 SqlDataSource 控件来类比 Acc
42、essDataSource 控件,这里就不再过多赘述了。8.4.2 AccessDataSource 控件应用示例 这里,我们通过一个示例来演示 AccessDataSource 控件的用法。例 8.3 通过 AccessDataSource 控件检索并更新 SQL Server 数据库 Northwind 中 Products表中的资料。1、使用 AccessDataSource 控件连接到数据库(1)首先在 Visual Studio 2005 中创建一个新网站,命名为 AccessDS,选择“文件系统”存放方式。向导将自动生成一个 Default.aspx 的文件。(2)准备好 Acce
43、ss 数据库版的 Northwind.mdb 数据库文件 在解决方案资源管理器中,右键单击 App_Data 文件夹,选择“添加现有项”,将事先准备好的 Northwind.mdb 数据库文件添加到 App_Data 文件夹中备用。(3)从工具箱中分别找到 AccessDataSource 和数据绑定控件 GridView,拖放到页面中适当的位置,如图 8.16 所示。如果 AccessDataSource 控件上没有显示“SqlDataSource 任务”快捷菜单,则用鼠标右键单击 AccessDataSource 控件,然后,在系统弹出的快捷菜单上选择“显示智能标记”。图 8.16 使用
44、AccessDataSource控件连接到数据库(3)单击“AccessDataSource 任务”菜单上的“配置数据源”,系统就会弹出“配置数据源”向导。其中,第一步就是选择数据库,单击“浏览”按钮,即出现“选择 Microsoft Access 数据库”对话框,如图 8.17 所示。我们选择 Northwind.mdb 数据库并点击“确定”按钮。图 8.17“选择 Microsoft Access 数据库”对话框 屏幕回到选择数据库对话框画面,如图 8.18 所示。单击“下一步”按钮。图 8.18“选择数据库”对话框(4)向导进入“配置 Select 语句”画面,如图 8.19 所示。图
45、8.19 “配置 Select语句”对话框 这里,我们可以指定要从数据库中获取哪些数据。在“指定来自表或视图的列”下的“名称”下拉列表中,选择“产品”;在“列”下,勾选“产品 ID”、“产品名称”、“供应商 ID”、“类别 ID”字段。更复杂的定制 Select 语句,可以通过单击“WHERE”、“ORDER BY”、“高级”等按钮进行配置。(5)单击“下一步”,进入“测试查询”画面。可以通过单击“测试查询”按钮进行测试以确保前面所做配置无误,获取的数据是所需数据。单击“完成”按钮。至此,使用 AccessDataSource 控件连接到数据库的配置任务完成。2、将 AccessDataSou
46、rce 控件和数据绑定控件进行绑定(1)在页面设计窗体上选择 GridView 控件,如果未显示“GridView 任务”快捷菜单,同样用鼠标右键单击 GridView 控件,然后,在系统弹出的快捷菜单上选择“显示智能标记”。因为,前面已经配置好了 AccessDataSource 控件,所以直接在“选择数据源”列表框中选择已定义好的 AccessDataSource1 控件即可,如图 8.20。图 8.20 设置 GridView控件的数据源(2)将前面配置好的 AccessDataSource 控件设置为 GridView 控件的数据源,本质上就是将 GridView 控件和 Access
47、DataSource 控件绑定到了一起。因此,GridView 控件将显示SqlDataSource 控件返回的数据。图 8.21 是最后的运行结果画面。图 8.21 运行结果 可以看出,AccessDataSource 控件和 SqlDataSource 控件用法极其相似。AccessDataSource只不过是专门针对 Access 数据库而设计罢了。需要注意的是,AccessDataSource 控件不支持访问受密码保护的 Access 数据库文件,如果需要访问受密码保护的 Access 数据库文件,则需要使用 SqlDataSource 控件。8.5 XmlDataSource控件 X
48、ml 数据源控件可以让数据绑定控件轻易的连接到 XML 数据源。在只读方式下通常使用 XmlDataSource 控件显示分层 XML 数据。8.5.1 XML 文档概述 为了讨论 XmlDataSource 控件,有必要简单回顾一下 XML 文档这一概念。XML 是一种平台无关的、采用分层结构表示数据的方法。XML 和 HTML 一样是一种标记语言,但 HTML 的标记是固定的,而 XML 的标记是用户定义的,从理论上讲,其类型的数量可以是无限的。HTML 强调布局,而 XML 只注重内容。XML 可用于存储数据,是以数据为中心的文档,从数据库本质上来看,我们也可以把XML 文件视为数据库,
49、它是数据的集合,因为采用 XML 格式存储的数据是纯文本格式,所以,使用 XML 创建的数据可以被任何应用程序在任何平台上读取。为了显示 XML 文档,必须要有一个机制来描述如何显示文档。就像 HTML 元素使用CSS 样式表控制显示布局格式一样,XSL 是 XML 的首选样式表语言,并且,它要比 HTML使用的 CSS 复杂得多。为了在 XML 文档中查找信息,也需要有一种机制,这就是 XPath。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath 是一个获取 XML 文档中你所需要的节点元素的组件,是一种非常完美的能够简单快捷而且效率高的读取 XML 文档的语言。它允许你
50、用很少的代码就能获取指定的路径下你所选取的节点的值。这里,限于篇幅,我们仅就 XML 文档的相关知识做了一些简单讨论,更多有关 XML 文档的只是,大家可以参阅 XML 相关教程。8.5.2 XmlDataSource 常用属性、方法、事件 XmlDataSource 控件使用 DataFile属性指定 XML 文件并加载 XML 数据;使用TransformFile 属性指定一个可扩展样式表语言文件,以便在操作 DataFile 属性指定的 XML文件中的数据之前,转换 XML 文件中内容;使用 XPath 属性设置过滤 XML 文件内容的语法,从而处理 XML 文件中特定的数据。XmlDa