0

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

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

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

4

3 回答 3

2

您指定的方式是您可以做到的一种方式。但是,没有ExecuteSQLDataReader()功能,因为它是多余的。

由于SQLDataReader已经实现了IDataReader接口,因此创建特定于SQLDataReader.

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

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

并在您的逻辑中执行分配:

SQLDataReader reader = GetAllCarTypes_dr();

我认为这是最好的方法。

于 2009-04-17T14:45:31.253 回答
0

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

这个链接给出了关于何时使用的更多解释:http: //social.msdn.microsoft.com/Forums/en-US/adodotnetdataproviders/thread/a8ed157d-e93c-4a8d-83a4-78645614b4ac

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

于 2009-04-17T14:46:44.167 回答
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
于 2009-05-27T18:10:00.647 回答