使用 SqlDataSource 控件选择数据
使用 SqlDataSource 控件只需很少的代码或无需任何代码即可从数据库中检索数据。SqlDataSource 控件可用于任何具有关联 ADO.NET 提供程序(在配置文件的 DbProviderFactories 节中配置)的数据库,包括 Microsoft SQL Server、Oracle、ODBC 或 OLE DB 数据库(如 Microsoft Access)。您在配置时指定 SqlDataSource 使用的 SQL 语句语法以及是否可以使用更高级的数据库功能(如存储过程)均由所用的数据库决定。但是,数据源控件对于所有数据库的操作都是相同的。
若要使用 SqlDataSource 控件从数据库中检索数据,至少需要设置以下属性:
ProviderName   设置为 ADO.NET 提供程序的名称,该提供程序表示您正在使用的数据库。如果您正在使用 Microsoft SQL Server,请将 ProviderName 属性设置为“System.Data.SqlClient”;如果您正在使用 Oracle 数据库,请将 ProviderName 属性设置为“System.Data.OracleClient”;依此类推。
ConnectionString   设置为用于数据库的连接字符串。
SelectCommand   设置为从数据库中返回数据的 SQL 查询或存储过程。为 SelectCommand 属性设置的查询与在编写 ADO.NET 数据访问代码时为 ADO.NET IDbCommand 对象的 CommandText 属性设置的查询相同。SQL 查询的实际语法取决于您的数据架构和您所使用的数据库。
以下几节更详细地描述了这些属性。
指定提供程序名称
ProviderName 属性设置为 ADO.NET 提供程序的名称,该提供程序与存储数据的数据库的类型关联。允许的提供程序的列表在配置文件(fig 或 fig 文件)的 DbProviderFactories 节中注册。默认情况下,SqlDataSource 控件使用对应于 Microsoft SQL Server 的 System.Data.SqlClient ADO.NET 提供程序。因此,如果要连接到 SQL Server 数据库,则无需显式指定提供程序。但是,您还可以指定 System.Data.OracleClientSystem.Data.OdbcSystem.Data.OleDb 提供程序。有关更多信息,请参见 ADO.NET
注意
不要将 ProviderName 属性设置为非托管 ADO 提供程序的值,如 SQLOLEDBMSDAORA
指定连接字符串
可将 ConnectionString 属性设置为用于特定数据库的连接字符串。不过,将 SqlDataSource 控件的 ConnectionString 属性设置为特定连接字符串,对于大型站点来说并不能算是一种易于维护的策略。另外,连接字符串以明文形式存储在 ASP.NET 页中。若要使 Web 应用程序更易于维护并且安全性更高,建议将连接字符串存储在应用程序配置文件的 connectionStrings 元素中。然后可以用与下面示例中的连接表达式类似的连接表达式来引用存储的连接字符串:
复制
<asp:SqlDataSource
  ID="SqlDataSource1"
  runat="server"
  ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>"
  SelectCommand="SELECT * FROM [Categories]">
</asp:SqlDataSource>
若要获得更高的安全性,可对 <connectionStrings> 配置节的内容进行加密。有关更多信息,请参见加密和解密配置节
指定选择命令
可通过设置 SqlDataSource 控件的 SelectCommand 属性指定该控件要执行的 SQL 查询。下面的示例演示一个 SQL 查询,它检索包含 Employees 表中所有员工的姓的结果集:
复制
SELECT LastName FROM Employees;
下面的代码示例演示如何设置 SqlDataSource 控件的 ConnectionStringSelectCommand 属性,以便在 GridView 控件中显示 Employees 数据:
C#
VB
复制
<%@ Page language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>
      <asp:ListBox
          id="ListBox1"
          runat="server"
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>
    </form>
  </body>
</html>
J#
复制
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml" >
控件的使用
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>
      <asp:ListBox
          id="ListBox1"
          runat="server"
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>
    </form>
  </body>
</html>
如果使用的数据库支持存储过程,则可以将 SelectCommand 属性设置为存储过程的名称,并将 SelectCommandType 属性设置为 StoredProcedure,以指示 SelectCommand 属性引用一个存储过程。下面的示例演示一个可在 SQL Server 中创建的简单存储过程:
复制
CREATE PROCEDURE sp_GetAllEmployees AS
    SELECT * FROM Employees;
GO
若要配置 SqlDataSource 以使用此存储过程,请将 SelectCommand 文本设置为“sp_GetAllEmployees”,并将 SelectCommandType 属性设置为 StoredProcedure
大多数存储过程都使用参数。有关使用带参数存储过程的更多信息,请参见对 SqlDataSource 控件使用参数
在运行时,SqlDataSource 控件将 SelectCommand 属性中的文本提交给数据库,数据
库将查询或存储过程的结果返回给 SqlDataSource 控件。绑定到数据源控件的所有 Web 控件都将在 ASP.NET 页上显示结果集。
将参数传递给 SQL 语句
用户通常通过仅在运行时解析或计算的参数与数据进行交互。例如,ASP.NET 网页上显示的数据可能表示特定日期的报表。如果用户选择不同的日期,则报表中的数据也可能会发生更改。无论是由用户显式更改日期还是由 Web 应用程序以编程方式更改日期,如果提交到数据库的 SQL 查询是参数化的 SQL 查询(在这种查询中,SQL 语句的元素绑定到 Web 应用程序变量并在运行时进行计算),则该 SQL 查询会更为灵活且更易于维护。
通过将添加到 SelectParameters 集合的参数与 SelectCommand 查询中的占位符关联起来,SqlDataSource 控件支持参数化 SQL 查询。参数值可从页面上的其他控件、会话状态、用户配置文件以及其他元素中读取。有关更多信息,请参见对 SqlDataSource 控件使用参数

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。