将SqlDataReader绑定到Repeater。好的做法?

时间:2009-09-08 16:00:21

标签: c# .net asp.net

这是一个很好的做法,有什么我需要注意的吗?我将转发器绑定到asp:SqlDataSource。这样做的主要原因是为了获得对SqlCommand的更多控制(例如CommandTimeout)。

示例:

    try
    {
        SqlDataReader MyReader = GetSomeResultsFromSqlCommand();
        MyRepeater.DataSource = MyReader;
        MyRepeater.DataBind();
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        MyReader.Close();
    }

3 个答案:

答案 0 :(得分:15)

这是一件非常好的事情 - 让我提供一个更简洁的语法,它将提供相同的结果并提供相同的故障安全清理功能:

using (SqlDataReader MyReader = GetSomeResultsFromSqlCommand())
{
    MyRepeater.DataSource = MyReader;
    MyRepeater.DataBind();
}

答案 1 :(得分:2)

您的代码似乎写得很好,并不一定会违反任何最佳做法。然而,您可以稍微编写代码并使用“using”语句而不是try,catch,最后......

<小时/> 我个人试图避免使用SqlDataSource,因为它将您的前端代码紧密地耦合到您的数据。为了保持关注点的分离,我在一个类中创建了一个函数,可以为您提供这些数据,并且可以根据需要进行自定义。

答案 2 :(得分:1)

如果你把它包装在安德鲁建议的使用区块中,那没有什么错。我可能做的另一件事是使用ObjectDataSource而返回一个强类型业务对象的IEnumerable。这将推动您使用良好的业务和数据分层代码,如果您愿意,可以更轻松地使用ORM,并为您提供对所需sql命令的额外控制。