我正在更新一个Web应用程序,并决定使用SubSonic,因为它看起来很棒,我想学习它:)我正在尝试从我已有的方法返回SQLDataReader
并且已经完成了此
public SqlDataReader GetAllCarTypes_dr()
{
return (SqlDataReader)new Query("tblCarType").ExecuteReader();
}
检查这是正确的方法吗?或者是否有更好的亚音速语法,如ExecuteSQLDataReader()
?
答案 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