SqlDataSource.Select 方法

 

通过使用 SelectCommand SQL 字符串以及 SelectParameters 集合中的任何参数,从基础数据库中检索数据。

命名空间:   System.Web.UI.WebControls
程序集:   System.Web(在 System.Web.dll 中)
C#
public IEnumerable Select(
	DataSourceSelectArguments arguments
)
参数
arguments
类型: System.Web.UI.DataSourceSelectArguments
用于请求对数据执行基本数据检索操作以外操作的 DataSourceSelectArguments 对象。
返回值
类型: System.Collections.IEnumerable
一个数据行的 IEnumerable 列表。
异常条件
InvalidOperationException

SqlDataSource 对象无法与基础数据源建立连接。

在页生命周期的 PreRender 阶段中会自动调用 Select 方法。 该方法由已通过其 DataSourceID 属性附加到 SqlDataSource 控件的数据绑定控件调用。

如果 DataSourceMode 属性设置为 DataSet 值,则 Select 方法会返回 DataView 对象。 如果 DataSourceMode 属性设置为 DataReader 值,则 Select 方法会返回 IDataReader 对象。 数据读取完毕后,关闭 IDataReader 对象。

在执行 Select 操作之前,调用 OnSelecting 方法来引发 Selecting 事件。 您可以处理此事件以在执行 Select 操作之前检查参数的值并执行任何处理。

Select 操作完成后,就会调用 OnSelected 方法来引发 Selected 事件。 您可以处理此事件以检查所有返回值、错误代码,并执行任何后续处理。

如果 DataSourceMode 属性设置为 SqlDataSourceMode.DataSet 并启用缓存,则 SqlDataSource 对象在 Select 操作期间从缓存检索数据并将数据保存到缓存中。 该缓存将根据由 CacheDurationCacheExpirationPolicy 属性共同指定的缓存行为进行创建、放弃或刷新。

安全说明安全说明

在 Microsoft Windows 身份验证下使用客户端模拟时,数据在第一个用户访问它时被缓存。 如果另一个用户请求同一数据,则会从缓存中检索该数据。 对数据库执行另一个调用以验证用户对数据有访问权限时不会检索数据。 如果希望数据可由多个用户访问,并且要求数据库的安全配置对数据的每一次检索进行验证,请不要使用缓存。

如果 DataSourceMode 属性设置为 SqlDataSourceMode.DataSet 值,而且已指定 FilterExpression 属性,则在 Select 操作期间,将使用任何提供的 FilterParameters 属性来计算筛选表达式,并将得到的筛选器应用于数据列表。

Select 方法委托给与 SqlDataSource 控件关联的 SqlDataSourceView 对象的 Select 方法。 为了执行数据检索操作,SqlDataSourceView 通过使用 SelectCommand 文本和任何关联的 SelectParameters 值生成 DbCommand 对象,然后对基础数据库执行 DbCommand

安全说明安全说明

如果未经验证便将值插入参数中,则可能会导致安全威胁。 使用 Filtering 事件在执行查询前验证参数值。 有关更多信息,请参见Script Exploits Overview

下面的示例演示如何以编程方式调用 Select 方法,并基于查询结果设置值。 下面的示例演示 Web 控件的声明性代码。

C#
<asp:SqlDataSource 
    ID="SqlDataSource1" 
    runat="server" 
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
    SelectCommand="SELECT Count(*) FROM [Products] WHERE ([ReorderLevel] &gt; 0)">
</asp:SqlDataSource>
<asp:Label 
    ID="Label1" 
    runat="server" 
    Text="">
</asp:Label>
<br />
<asp:Button 
    ID="Button1" 
    Text="Check Reorder Status" 
    runat="server" 
    οnclick="Button1_Click" />


下面的示例演示如何以编程方式调用 Select 方法。 SqlDataSource 控件返回一个整数。 该整数值用于设置 Label 控件的文本并确定是否显示 HyperLink 控件。

C#
protected void CheckReorderStatus()
{
    DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
    int reorderedProducts = (int)dv.Table.Rows[0][0];
    if (reorderedProducts > 0)
    {
        Label1.Text = "Number of products on reorder: " + reorderedProducts;
    }
    else
    {
        Label1.Text = "No products on reorder.";
    }
}

protected void Button1_Click(object sender, EventArgs e)
{
    CheckReorderStatus();
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值