1 创建SqlDataSouce控件 4.1.1 数据源控件(SqlDataSource) ASP.NET 提供的 SqlDataSource 控件能够方便的添加到页面,当 SqlDataSource 控件被添加到ASP.NET 页面中时,会生成 ASP.NET 标签,示例代码如下所示。 <asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource> 在新建数据源后,开发人员可以选择是否保存在web.config数据源中以便应用程序进行全局配置, 通常情况下选择保存。由于现在没有连接,单击【新建连接】按钮选择或创建一个数据源。单击后,系统会弹出对话框用于选择数据库文件类型,如图。 切换到视图模式下,点击SqlDataSource控件会显式【配置数据源……】,单击【配置数据源……】 连接时,系统能够智能的提供SqlDataSource控件配置向导,如图。
4.1.1 数据源控件(SqlDataSource) 选择完后,配置信息就会显式在web.config中。当需要对用户控件进行维护时,可以直接修改 web.config,而不需要修改每个页面的数据源控件,这样就方便了开发和维护。当选择了数据源后,需 要对数据源的连接进行配置,这一步与 ADO.NET 中的 Connection 对象一样,就是要与数据库建立连接, 当配置好连接后,可以单击【测试连接】按钮来测试是否连接成功,如图。
4.1.1 数据源控件(SqlDataSource) 连接成功后,单击【确定】按钮,系统会自动添加连接,如图所示。连接添加成功后,在web.config配置文件中,就有该连接的连接字串,代码如下所示。 <connectionStrings> <add name="mytableConnectionString" connectionString="Data Source=WIN-YXDGNGPG621;Initial Catalog=mytable; Integrated Security=True" providerName="System.Data.SqlClient" /> </connectionStrings> 数据源控件可以指定开发人员所需要使用的 Select 语句或存储过程,开发人员能够在配置 Select 语句窗口中进行 Select 语句的配置和生成,如果开发人员希望手动编写 Select 语句或其他语句,可以单击【指定自定义 SQL 语句或存储过程】按钮进行自定义配置,Select 语句的配置和生成如图所示。
4.1.1 数据源控件(SqlDataSource) 对于开发人员,只需要勾选相应的字段,选择Where条件和Order By语句就可以配置一个 Select 语句。但是,通过选择只能够查询一个表,并实现简单的查询语。如果要实现复杂的SQL查询语句, 可以单击【指定自定义SQL语句或存储过程】进行自定义SQL语句或存储过程的配置,如图所示, 开发人员选择了一个getdetail的存储过程作为数据源。
4.1.1 数据源控件(SqlDataSource) 单击【下一步】按钮,就需要对相应的字段进行配置,这些字段就像 ADO.NET 中的参数化查询一 样。在数据源控件中,也是通过@来表示参数化变量,当需要配置相应的字段,例如配置 WHERE 语句 等就需要对参数进行配置,如图所示。
完成后,SqlDataSource 控件标签代码如下所示。 添加 WHERE 子句时,SQL 语句中的值可以选择默认值、控件、Cookie 或者是 Session 等。当配置 完成后,就可以测试查询,如果测试后显示的结果如预期一样,则可以单击完成,如图所示。 完成后,SqlDataSource 控件标签代码如下所示。 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:mytableConnectionString %>" SelectCommand="SELECT [TITLE], [ID] FROM [mynews]"> </asp:SqlDataSource>
2 配置SqlDataSouce控件属性 4.1.1 数据源控件(SqlDataSource) SqlDataSource控件还包括一些可视化属性,这些属性包括删除查询(DeleteQuery)、插入查询(InsertQuery)、检索查询(SelectQuery)以及更新查询(UpdateQuery)。当需要使用可视化属性时, 需选择【使用自定SQL语句或存储过程】复选框,在导航中可以使用查询生成器生成查询语句,如图所示。
选择【查询生成器】按钮,系统会提示选择相应的表并通过相应的表来生成查询语句,如图所示。 4.1.1 数据源控件(SqlDataSource) 选择【查询生成器】按钮,系统会提示选择相应的表并通过相应的表来生成查询语句,如图所示。
配置相应的查询语句后,SqlDataSource 控件的 HTML 代码如下所示。 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:mytableConnectionString %>" InsertCommand="INSERT INTO mynews(ID) VALUES ('control title')" SelectCommand="SELECT [TITLE], [ID] FROM [mynews]"> </asp:SqlDataSource> 上述代码自动增加了一个 InsertCommand 并指定了 Insert 语句。开发人员可以为 SqlDataSource 控件 指定四个命令参数:SelectCommand、UpdateCommand、DelectCommad 和 InsertCommand。每个都是数 据源控件的单一属性,开发人员可以配置相应的语句指定 Select、Update、Delete 以及 Insert 方法。 SqlDataSource 控件同时能够使用缓存来降低页面与数据库之间连接频率,这样可以避免开销很大的 查询操作,以及建立连接和关闭连接操作。只要数据库是相对稳定不变的,则可以使用 SqlDataSource 控件的缓存属性(EnableCaching)来进行缓存。在默认情况下,缓存属性(EnableCaching)是关闭的,需要开发人员自行设置缓存属性。
4.1.2 Access 数据源控件(AccessDataSource) SqlDataSource 能够与任何一种 ADO.NET 支持的数据源进行交互,这些数据源包括 SQL Server、 Access、Oledb、Odbc 以及 Oracle。但是 Access 数据库有专门的数据源控件,就是 AccessDataSource。 AccessDataSource 控件同配置 SqlDataSource 控件基本相同,如图所示。
4.1.2 Access 数据源控件(AccessDataSource) 与SqlDataSource不同的是,SqlDataSource主要采用的是ConnectionString属性连接数据库,而Access则采用的是AccessDataSource方式连接数据库。因为Access数据库是以文件的形式存在于系统中的, 所以主要采用DataFile属性直接以文件地址的方式进行连接。要连接Access数据库,则必须选择Access数据库文件,如图。
4.1.2 Access 数据源控件(AccessDataSource) 在选择了Access数据库文件后,单击【确定】按钮,系统就会为开发人员配置连接字串,在核对 无误后,单击【下一步】按钮进入Select语句的配置。同SqlDataSource控件一样,同样能够配置Select语句或自定义存储过程,如图所示。
其他步骤与SqlDataSource相同,当创建完成后,AccessDataSource控件的 HTML代码如下所示。 4.1.2 Access 数据源控件(AccessDataSource) 其他步骤与SqlDataSource相同,当创建完成后,AccessDataSource控件的 HTML代码如下所示。 <asp:AccessDataSource ID="AccessDataSource1" runat="server" DataFile="~/acc.mdb" SelectCommand="SELECT [bh], [title] FROM [mytable]"> </asp:AccessDataSource> 当需要使用 Access 数据库,推荐将 Access 数据库文件保存在 App_Data 文件夹中。以保证数据库文件是私有的,因为 ASP.NET 不允许直接请求 App_Data 文件夹。 注意:AccessDataSource 控件不支持访问受密码保护的 Access 数据库文件,如果需要访问受密码保 护的 Access 数据库文件,则需要使用 SqlDataSource 控件。
如果需要使用 SiteMapDataSource 控件,用户必须在 Web.sitemap 文件中描述站点的结构,示例代码 如下所示。 在 ASP 的开发过 程中,必须手动的为每个页面加入导航,这样不仅加大了开发的复杂度,也让代码的复用性变低。在ASP.ENT 2.0以后的版本,微软提供了导航控件让导航菜单的创建、自定义和维护变得更加的简单。SiteMapDataSource控件包含来自站点地图的导航数据,这些数据包括有关网站中的页的信息。如果将导航数据存储在一个地方,则可以方便的在网站的导 航菜单添加和删除项。站点地图提供程序中检索导航数据,然后将数据传递给可显示该数据的数据绑定控件,显示导航菜单。 如果需要使用 SiteMapDataSource 控件,用户必须在 Web.sitemap 文件中描述站点的结构,示例代码 如下所示。 <?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="" title="根目录" description="根目录"> <siteMapNode url="SqlDataSource.aspx" title="SqlDataSource.aspx" description="SQL 数据库" /> <siteMapNode url="AccessDataSource" title="AccessDataSource" description="Access 数据库" /> <siteMapNode url="LinqDataSource" title="LinqDataSource" description="Linq" /> <siteMapNode url="ObjectDataSource" title="ObjectDataSource" description="Object" /> <siteMapNode url="XmlDataSource" title="XmlDataSource" description="Xml" /> </siteMapNode> </siteMap>
4.1.5 站点导航控件(SiteMapDataSource) 上述代码描述了网站的目录结构,在文件中,必须有一个根为 siteMapNode 的元素作为 siteMap 元 素的自己,并定义以下常用属性: title:为站点地图节点指定一个标题,该标题将显示为网页的连接文本。 Url:为网页指定 URL。支持相对或绝对路径。 Description:为站点地图的节点添加描述,当用户鼠标移动到该栏目时,则会显示描述信息。 StartFormCurrentNode:当设置为 true 时,则可以从该节点开始检索站点地图结构。 StartingNodeOffset:当属性设置为 2 时可以检索当前地图结构。 SiteMapDataSource 控件无需配置,拖放一个 TreeView 控件和一个 SiteMapDataSource 控件在页面, 指定 TreeView 数据源即可,如图 8-26 所示。
4.1.5 站点导航控件(SiteMapDataSource) 配置完成后,数据绑定控件会自动读取Web.sitmap文件并生成导航。当使用了 SiteMapDataSource 控件后,数据绑定控件就能够绑定 SiteMapDataSource 控件并自动读取相应的值并生成导航,当需要对 导航进行修改时,只需要修改 Web.sitemap 即可,方便了站点导航功能的使用和维护。运行后如图所示。