Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)delvpublished in(发表于) 2014/1/6 9:01:16 ASP.NET2.0中的AccessDataSource控件_[Asp.Net教程]
ASP.NET2.0中的AccessDataSource控件_[Asp.Net教程] ASP.NET 2.0包含了AccessDataSource控件,用来从Access数据库中将数据提取至ASP.NET 2.0(.aspx)页面。这个控件拥有的属性很简单。AccessDataSource的最重要的属性是DataFile属性,用来指向硬盘上MDB文件的路径。AccessDataSource拥有的其他属性还有SelectCommand,用来设定一个显示需要返回的结果集(表和列)的语句。SelectCommand必须使用SQL语法来定义。 在VWD中,可以用两种方式来添加AccessDataSource控件至页面。如果MDB文件像前面的示例中那样被添加至Database Explorer中,那么可以拖放列名称至页面上,而且VWD将会自动创建AccessDataSource控件和GridView来显示数据。如果不想使用GridView或者想定制控件,那么可以只从工具框中添加AccessDataSource控件并通过配置向导进行安装。向导将会提示浏览查找数据文件,并且允许通过在数据库的表中选择列来指定SelectCommand。如果是在VWD之外输入页面的,那么可以按照如下所示代码来输入:
图 2-2
(13) 最后的操作是从MDB Query而不是表中显示数据。关闭浏览器并返回至VWD。用新名称ch02_TIO_2_DisplayAccessData-Query.aspx保存文件。选择GridView并通过单击控件右上方的小箭头来打开它的Common Task Menu。单击Configure Data Source和Next跳过MDB文件的选择。在Configure Select Statement的界面上,将名称改为“销售分类”并点选星号以获得所有的字段。这个查询使用JOIN将四个表结合在一起,限制在一个表中使用的记录数并通过一些数据的分组和聚合操作来获得总数。依次单击Next、Test the Query和Finish。数据源控件应当像如下所示:
(14) 打开浏览器并查看页面。 示例说明 #2—— 连接至MDB并用GridView显示数据 您有两个页面上的控件。第一个是AccessDataSource,执行连接ADO.NET对象的所有工作,而这些对象连接那些与MDB文件交互的JET引擎。第二个是GridView,用于获取数据并将其格式转化为页面可以显示的HTML格式。请注意给每个控件一个有意义的名称(ID)非常重要。然后必须确定数据绑定控件(GridView)使用它的DataSourceID属性来引用AccessDataSource的ID以便将AccessDataSource作为它的数据源。 从查询中显示数据并不非常困难;在Access中可以不用表名称而使用查询名称。这里有两个说明。第一,如果表或者查询的名称中间有空格,那么必须用方括号将整个名称括起来。第二,需要用户输入(例如,“指定年份的销售”需要知道是哪一年)的查询涉及到的技术不在本书的讨论范围之内。 完成前面几个步骤之后,就可以在页面上看到从AccessDataSource控件获得的数据显示了。后面的章节将详细介绍GridView,但是本章还将继续关注数据源控件。
选择语句中的变量 当在VWD中创建一个数据源时,向导将会要求指定需要显示的列或者要求创建一条定制的SQL语句。在前面的“试一试”中,简单地选择了几个列。可以以几种不同的方式来指定更复杂的SQL语句: ● 使用交互式的对话框 ● 在AccessDataSource向导(由控件中的Configure Data Source便捷任务调用)中输入定制的SQL语句 ● 在属性网格中输入语句 ● 直接在Source视图的标记中输入语句 对那些从单独的表中返回一个或者多个列的简单查询来说,在Access DataSource向导中选择列是一个首选技术,因为它减少了排版和语法所带来的错误(请参见图2-3) 。在这个向导中,可以从Name下拉列表中选择表或者查询的名称。然后您可以通过选择所有列(*)或者任一组列来选择表或者查询中需要的列。如果您单击了Order By按钮,那么您就可以在数据源中按照任何列来进行排序。如果第一个列有约束,那么将会使用在Then By中选择的字段。在您从向导中选择选项的时候,请注意SelectCommand的实际SQL语法也同时显示在一个只读文本框中。
图 2-3
利用向导中的WHERE按钮可以创建带有参数的SQL语句,这部分内容将会在第9章中介绍。现在,我们将跳过这个选择,但是重要的是在部署之前您将使用这些将在本书后面讨论的参数。在一个部署完成的站点中,要避免直接将用户的输入与SQL语句连接。忽略参数问题将会使站点暴露在SQL注入攻击的危险之中。这种攻击技术使用了从用户输入而来的假字符使得原来的SQL语句无效,然后用具有破坏性的语句取而代之。可以使用参数集合来发送用户输入至ADO.NET参数集合,这样可以利用集合的功能减少SQL注入的问题。 虽然Configure Data Source向导具有很多选项可以帮助快速地创建SQL语句,但是有些时候还是需要在标记的SelectCommand中直接输入(或者修改)SQL语句。AccessDataSource向导允许进行这些操作。在选择表、查询和列的向导页面中,可以选择“Specify a custom SQL statement or stored procedure”的单选按钮。在向导页面中选择这个选项之后单击Next按钮将进入另外一个页面,可以直接在文本区域中输入自定义的语句。还可以使用Visual Studio QueryBuilder来可视化地创建自定义语句,所使用的工具与Access QueryBuilder的非常相似。 如果不想使用向导,那么可以选择在AccessDataSource控件的属性网格中输入自定义的SQL语句,或者可以切换至Source视图并在AccessDataSource控件标记的SelectCommand属性中输入语句。 关于SQL有很多书籍(像本书一样类型的还有Beginning SQL Programming,ISBN 1-861001-80-0) ,本书在附录中提供了一个简要的介绍。如果打算学习SQL语法,那么开始阶段可以学习返回记录的一部分(TOP和DISTINCT)的命令、重命名一个字段(AS)的语法,以及从两个相关联的表返回字段的技术(JOIN)。下面的练习将探究SQL语句中的一些变量。 试一试 #3—— 更改AccessDataSource中的选择语句 在本练习中,将要从Northwind的Products表中显示特定的列和特定的记录。还将创建一个页面用来显示从查询中获得的数据。请注意在本练习中,选择规则已经在源代码之中了。目前,还没有将用户输入作为选项。 (1) 在C:\Websites\BegAspNet2Db\ch02\中创建名为ch02_TIO_3_AlternateSelect- Commands.aspx的文件。 (2) 以Northwind作为ID添加一个AccessDataSource控件并设置MDB为\App_Data\Northwind.mdb。在一系列对话框中,设置Select命令从Products表中获取所有的字段( “name”=Products)。查看一下Source视图并注意您所创建的语句,如下所示:
(3) 添加GridView,将ID设置为Northwind,将数据源设置为Northwind。如下所示是到目前为止整个页面的样子:
(4) 现在在浏览器中打开页面,并注意如图2-4所示的界面(在截图中没有显示所有的列)。
图 2-4
(5) 回到Design视图并选择AccessDataSource(不是GridView)。打开它的便捷任务面板并单击Configure Data Source。在Configure Select Stat ement窗口中,选择“Specify a custom SQL statement”并单击Next。在编辑器中修改SQL语句,如下所示:
(6) 单击Next并测试查询。单击OK关闭对话框。查看一下Source视图中的页面并注意如下代码:
(7) 试着使用对话框来创建如下一些Select命令,也可以在Source视图中输入,或者两者结合起来使用。
示例说明#3—— 更改AccessDataSource中的选择语句 在首先几个步骤中,像前面一样创建了一个AccessDataSource控件和GridView。但是随后开始用Select语句进行试验。通过复选框添加和删除列是最直观的。还可以在编辑器窗口中直接输入(或者编辑)SQL语句。 添加了WHERE子句用来限制从MDB文件中返回的记录。如果列名没有包含空格,那么可以省略方括号。如果在列名中包含了空格,那么就必须使用这些方括号。
MDB文件位置中的变量 MDB文件保存在硬盘中的各种物理位置上:与Web页相同的文件夹、Web页下的子文件夹或者机器中的其他文件夹等。在Visual Web Developer中,可以在设计器中经常浏览这些文件,并且MDB文件的正确路径也已经输入好了。但是,如果您打算输入自己代码的话,还需要遵循本节所介绍的语法。 AccessDataSource控件的DataFile属性包含的页面路径可以是完全限定的(例如以驱动器盘符开头)也可以是相对于包含AccessDataSource的页面的位置而指定的。路径还可以是相对于应用程序的,即使用URL语法来引用路径。这个语法将符号(~)替换为应用程序根目录,比如:~\App_Data\produces.mdb。使用相对于应用程序的路径可以更加容易地将页面从一个位置移动到另外一个位置而不破坏对数据库的引用,所以推荐在可能的时候都使用相对于应用程序的路径。 首先,我们来看完全限定路径的语法,它包含了MDB文件的整个路径,以文件所在的计算机驱动器的根目录开头:
赞