使用SubSonic返回SQLDataReader?

时间:2009-04-17 14:24:46

标签: subsonic sqldatareader

我正在更新一个Web应用程序,并决定使用SubSonic,因为它看起来很棒,我想学习它:)我正在尝试从我已有的方法返回SQLDataReader并且已经完成了此

public SqlDataReader GetAllCarTypes_dr()
{
    return (SqlDataReader)new Query("tblCarType").ExecuteReader();
}

检查这是正确的方法吗?或者是否有更好的亚音速语法,如ExecuteSQLDataReader()

3 个答案:

答案 0 :(得分:2)

您指定的方式是您可以这样做的一种方式。但是,没有ExecuteSQLDataReader()函数,因为它是多余的。

由于SQLDataReader已经实现了IDataReader接口,因此创建特定于SQLDataReader的函数毫无意义。

您可以考虑以与SubSonic相同的方式返回界面,例如:

public IDataReader GetAllCarTypes_dr()
{
    return new Query("tblCarType").ExecuteReader();
}

并在你的逻辑中执行作业:

SQLDataReader reader = GetAllCarTypes_dr();

我认为这是最好的方法。

答案 1 :(得分:0)

嗯,它编译,对吧?只是开玩笑。

此链接提供了有关何时使用的更多解释: http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/a8ed157d-e93c-4a8d-83a4-78645614b4ac

只要确保你在某处关闭读者(读者?),这样他们就不会留下开放的连接。

答案 2 :(得分:0)

private void CreateDynamicControls()
{


    panGvHolder.Controls.Clear();

    Query qry = Northwind.Product.CreateQuery();
    qry.Columns.AddRange(Northwind.Product.Schema.Columns);
    qry.WHERE("UnitPrice > 15").AND("UnitsInStock < 20 ");
    //WHERE("UnitPrice > 15").AND("UnitsInStock < 30 ");



    using (IDataReader rdr = qry.ExecuteReader())
    {
        Response.Write("<table>");
        while (rdr.Read())
        {
            Response.Write("<tr>");
            for (int i = 0; i < rdr.FieldCount; i++)
            {
                Response.Write("<td>");
                Response.Write(rdr[i].ToString() + " ");
                Response.Write("<td>");
            } //eof for 
            Response.Write("</br>");
            Response.Write("</tr>");
        }
        Response.Write("<table>");
    }
} //eof method