演练:在 GridView Web 服务器控件中使用存储过程显示数据

更新:2007 年 11 月

此演练演示如何使用存储过程在 GridView 控件中显示数据。存储过程是存储在 Microsoft SQL Server 数据库中而不是应用程序代码中的 SQL 查询。存储过程比查询代码更安全,而且通常运行速度更快。在此演练中,您将创建检索存储过程结果的 SqlDataSource 控件。SqlDataSource 控件充当 GridView 控件的数据源。GridView 控件读取存储过程生成的结果,并创建显示数据的行和表。

通过此演练,您将学会如何执行以下任务:

  • 在 Visual Web Developer 中连接到 SQL Server 数据库。

  • 使用 SqlDataSource 控件管理数据访问和绑定。

  • 添加一个存储过程以返回将显示在 GridView 控件中的数据。

  • GridView 控件中显示存储过程返回的数据。

系统必备

若要完成本演练,您需要:

  • Visual Studio 2008 或 Visual Web Developer 2008 速成版。

    k10148y1.alert_note(zh-cn,VS.90).gif说明:

    Visual Web Developer 2005 速成版 不支持本演练中使用的“添加新存储过程”功能。

  • SQL Server Express Edition。如果已经安装了 SQL Server,则可以改用 SQL Server,但必须对某些过程进行小的调整。

  • Microsoft 数据访问组件 (MDAC) 2.7 或更高版本。

    如果您使用的是 Microsoft Windows XP 或 Windows Server 2003,那么您已经有了 MDAC 2.7。但是,如果您使用的是 Microsoft Windows 2000,您可能需要升级您计算机上已经安装的 MDAC。有关更多信息,请参见 MSDN 网站中的 Microsoft Data Access Components (MDAC) Installation(Microsoft 数据访问组件 (MDAC) 安装)。

  • SQL Server Northwind 数据库的访问权限。有关如何下载和安装 SQL Server 示例数据库 Northwind 的信息,请参见 Microsoft SQL Server 网站上的安装示例数据库

    k10148y1.alert_note(zh-cn,VS.90).gif说明:

    如果需要有关如何登录到 SQL Server 的信息,请与服务器管理员联系。

创建网站

按照下面的步骤创建一个新的网站和网页。

创建文件系统网站

  1. 打开 Visual Web Developer。

  2. 在**“文件”菜单上单击“新建”,然后单击“网站”。如果使用的是 Visual Web Developer 速成版,则在“文件”菜单上单击“新建网站”**。

    显示**“新建网站”**对话框。

  3. 在**“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”**。

  4. 在第一个**“位置”框中选择“文件系统”**,在第二个框中输入要保存网站网页的文件夹的名称。

    例如,键入文件夹名称“C:\WebSites\StoredProcedure”。

  5. 在**“语言”**列表中,单击您想使用的编程语言。

  6. 单击**“确定”**。

    Visual Web Developer 速成版 将创建该文件夹和名为 Default.aspx 的新页。

添加存储过程以返回数据

若要在 ASP.NET 网页上显示数据,需要下列元素:

  • 到数据源(如数据库)的连接。

    在下面的过程中,您将创建一个到 SQL Server Northwind 数据库的连接。

  • 返回要显示的数据的存储过程。

  • 该页上的一个数据源控件,该控件执行存储过程并管理结果。

  • 该页上的一个用于显示数据的控件。

在下面的过程中,您将通过 GridView 控件显示数据。GridView 控件将从 SqlDataSource 控件中获取其数据。

第一步是创建一个存储过程。

创建存储过程以返回数据

  1. 在**“服务器资源管理器”中,右击“数据连接”,然后单击“添加连接”。如果使用的是 Visual Web Developer 速成版,请使用“数据库资源管理器”**。

    此时将显示**“添加连接”**对话框。

    • 如果**“数据源”列表没有显示“Microsoft SQL Server (SqlClient)”,则单击“更改”,并在“更改数据源”对话框中选择“Microsoft SQL Server”**。

    • 如果显示的是**“选择数据源”对话框而不是“连接属性”对话框,请在“数据源”列表中选择要使用的数据源的类型。对于此演练,数据源类型为“Microsoft SQL Server”。在“数据提供程序”列表中,单击“用于 SQL Server 的 .NET Framework 数据提供程序”,然后单击“继续”**。

      k10148y1.alert_note(zh-cn,VS.90).gif说明:

      如果“服务器资源管理器”选项卡在 Visual Web Developer 中不可见,请在“视图”菜单上单击“服务器资源管理器”。在 Visual Web Developer 速成版 中,在“视图”菜单上单击“数据库资源管理器”

  2. 在**“添加连接”框中,在“服务器名称”**文本框中输入服务器名称。

  3. 对于**“登录到服务器”**部分,请选择适合访问正在运行的 SQL Server 数据库的选项(集成安全性或特定 ID 和密码),并根据需要输入用户名和密码。

  4. 如果输入了密码,请选中**“保存密码”**复选框。

  5. 在**“选择或输入数据库名称”**下输入“Northwind”。

  6. 单击**“测试连接”,并在确定该连接生效后单击“确定”**。

    新连接已创建并显示在**“服务器资源管理器”中的“数据连接”**下。

  7. 在**“服务器资源管理器”中的“数据连接”下展开刚刚创建的数据连接。如果使用的是 Visual Web Developer 速成版,请使用“数据库资源管理器”**。

    “数据连接”展开为包括子连接,如“表”“视图”“存储过程”

  8. 右击**“存储过程”,然后单击“添加新存储过程”**。

    k10148y1.alert_note(zh-cn,VS.90).gif说明:

    Visual Web Developer 2005 速成版 不支持“添加新存储过程”功能。

  9. 将下面的代码添加到新存储过程中,覆盖所有现有代码。

    CREATE PROCEDURE GetEmployees
    AS
        Select EmployeeID, LastName, FirstName from Employees
    RETURN 
    
  10. 关闭窗口并单击**“是”**创建存储过程。

    k10148y1.alert_note(zh-cn,VS.90).gif说明:

    CREATE 关键字在保存该过程时更改为 ALTER。

添加显示数据的 GridView 控件

建立到数据源的连接后,您需要:

  • 该页上的一个数据源控件,该控件执行存储过程并管理结果。

  • 该页上的一个用于显示数据的控件。

在下面的过程中,在 GridView 控件中显示数据。GridView 控件从 SqlDataSource 控件中获取其数据。

可以单独地将这三个元素添加到网站中。但通过使用 GridView 控件对数据显示进行可视化处理,然后使用向导创建连接和数据源控件,更容易着手一些。下面的过程解释如何创建在该页上显示数据所需的元素。

添加并配置用于显示数据的 GridView 控件

  1. 切换到或打开 Default.aspx 页,然后切换到**“设计”**视图。

  2. 在**“工具箱”中,从“数据”**组中将 GridView 控件拖动到页面上。

  3. 在**“GridView 任务”菜单上的“选择数据源”列表中,单击“新建数据源”**。

    显示**“数据源配置向导”**对话框。

  4. 选择**“数据库”,然后单击“确定”**。

    这指定要从 SQL Server 数据库中检索数据。

    在**“为数据源指定 ID”**框中,将显示默认的数据源控件名称(“SqlDataSource1”)。保留此名称。

    **“配置数据源 SqlDataSource1”**向导显示一个可在其中选择连接的页。

  5. 在**“应用程序连接数据库应使用哪个数据连接?”列表中,输入在上一步骤中创建的连接,然后单击“下一步”**。

    该向导显示一页,从该页中您可以选择将连接字符串存储到配置文件中。将连接字符串存储在配置文件中有两个优点:

    • 比将它存储在页面中更安全。

    • 可以在多个页中使用同一连接字符串。

  6. 选择**“是,将此连接另存为”复选框,然后单击“下一步”**。

    该向导显示一页,从该页中可以指定要从数据库中检索的数据。

  7. 选择**“指定自定义 SQL 语句或存储过程”选项,然后单击“下一步”**。

  8. 在**“定义自定义语句或存储过程”页中选择“存储过程”**,然后选择之前创建的存储过程 (GetEmployees)。

  9. 单击**“下一步”**。

  10. 单击**“测试查询”**确认要检索所需的数据。

  11. 单击**“完成”**。

添加 DetailsView 控件显示存储过程中的数据

可以显示来自接受参数的存储过程的数据。在下面的过程中,将创建一个 DetailsView 控件,以显示 GridView 控件中选定行的计算值。GridView 行将表示一个 Employee 记录,DetailsView 控件将显示为选定雇员计算的总销售额。

需要以下各项:

  • 将雇员 ID 作为参数并返回一个值的存储过程。

  • 该页上的第二个数据源控件,该控件执行存储过程并管理结果。两个数据源控件将表示与同一个数据库 Northwind 的连接。在本演练中,您将重用以前创建的与 SQL Server Northwind 数据库的连接。

  • 该页上的一个用于显示数据的 DetailsView 控件。

第一步是创建存储过程。

创建一个存储过程,以返回要在 DetailsView 控件中显示的数据

  1. 在**“服务器资源管理器”中的“数据连接”下展开以前创建的数据连接。如果使用的是 Visual Web Developer 速成版,请使用“数据库资源管理器”**执行此操作。

  2. 右击**“存储过程”,然后单击“添加新存储过程”**。

    k10148y1.alert_note(zh-cn,VS.90).gif说明:

    Visual Web Developer 2005 速成版不支持“添加新存储过程”功能。

  3. 将下面的代码添加到新存储过程中,覆盖所有现有代码。

    CREATE PROCEDURE EmployeeSales
    @Employee int AS
    SELECT   SUM([Order Subtotals].Subtotal) AS Total
    FROM Employees INNER JOIN
        Orders INNER JOIN
        [Order Subtotals] ON Orders.OrderID = [Order Subtotals].OrderID
    ON Employees.EmployeeID = Orders.EmployeeID
    WHERE (Employees.EmployeeID = @Employee)
    
  4. 关闭窗口并单击**“是”**创建存储过程。

    k10148y1.alert_note(zh-cn,VS.90).gif说明:

    CREATE 关键字在保存该过程时更改为 ALTER。

创建了存储过程以提供数据后,需要以下各项:

  • 该页上的一个数据源控件,该控件执行存储过程并管理结果。

  • 该页上的一个用于显示数据的控件。

在下面的过程中,您将通过 DetailsView 控件显示数据。DetailsView 控件将从 SqlDataSource 控件中获取其数据。

可以单独地将这三个元素添加到网站中。但通过使用 DetailsView 控件对数据显示进行可视化处理,然后使用向导创建连接和数据源控件,更容易着手一些。下面的过程解释如何创建在该页上显示数据所需的元素。

下一步是对 GridView 控件启用行选择。选定的行将决定传递给存储过程的 EmployeeID 参数。

对 GridView 控件启用行选择

  1. 右击 GridView 控件,然后单击**“显示智能标记”**。

  2. 在**“GridView 任务”窗格中,检查“启用选择”**。

下一步是创建一个显示存储过程结果的控件。

添加并配置用于显示数据的 DetailsView 控件

  1. 切换到或打开 Default.aspx 页,然后切换到**“设计”**视图。

  2. 在**“工具箱”中,从“数据”**组中将 DetailsView 控件拖动到页面上。

  3. 在**“DetailsView 任务”菜单上的“选择数据源”列表中,单击“新建数据源”**。

    显示**“数据源配置向导”**对话框。

  4. 选择**“数据库”,然后单击“确定”**。

    这指定要从 SQL Server 数据库中检索数据。

    在**“为数据源指定 ID”**框中,将显示默认的数据源控件名称(“SqlDataSource2”)。保留此名称。

    **“配置数据源 SqlDataSource2”**向导显示一个可在其中选择连接的页。

  5. 在**“应用程序连接数据库应使用哪个数据连接?”列表中,输入以前创建的连接,然后单击“下一步”**。

  6. 选择**“指定自定义 SQL 语句或存储过程”选项,然后单击“下一步”**。

  7. 在**“定义自定义语句或存储过程”页中选择“存储过程”**,然后选择之前创建的存储过程 (EmployeeSales)。

  8. 单击**“下一步”**。

    显示**“定义参数”**页。

  9. 在**“参数源”列表中选择“控件”**。

  10. 在**“ControlID”列表中选择“GridView1”**。

  11. 单击**“测试查询”确认要检索所需的数据。在“参数值编辑器”对话框中,输入值 1 然后单击“确定”**。值 1 是数据库中某个雇员的 ID。如果数据检索正常运行,会返回一个类似 192107.6000 这样的值。(如果修改了数据库中的数据,值可能会不同。)

  12. 单击**“完成”**。

测试该页

现在可以运行页面。

测试页面

  1. 按 Ctrl+F5 运行该页。

    该页显示在浏览器中。GridView 控件显示 Employees 表中的所有数据行。

  2. GridView 控件中单击某个数据行上的**“选择”**链接。

    DetailsView 控件显示选定行的详细信息,以及计算选定雇员的总销售额的存储过程的结果。

  3. 关闭浏览器。

后续步骤

此演练演示了如何使用 SQL Server 存储过程和数据源控件在 ASP.NET 网页上显示数据。使用 SqlDataSource 控件时,可以按照与使用任何 SQL 语句相同的方式使用存储过程。此外,存储过程可采用与网页上的值关联的参数。以下是可能会使用存储过程的其他情形,这里使用 SQL 语句执行与数据相关的功能:

请参见

任务

如何:在使用数据源控件时保证连接字符串的安全

演练:在 GridView Web 服务器控件中编辑时显示下拉列表

演练:网页中的基本数据访问