я решил начать другую нить на основе ответов, которые я получил в этой теме: Asp.Net: Returning a Reader from a ClassAsp.Net: Возвращение DataSet из класса
Я возвращающая читателя, но члены предложили я бы лучше возвращать набор данных вместо этого, а также попытаться отделить уровень доступа к данным от уровня представления.
Это то, что я до сих пор: // мои методы класса
public DataSet GetSuppliers()
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("con_spSuppliersList", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@blogid", HttpContext.Current.Request.QueryString["p"]);
return FillDataSet(cmd, "SuppliersList");
}
//my FillDataSet method
private DataSet FillDataSet(SqlCommand cmd, string tableName)
{
SqlConnection conn = new SqlConnection(connectionString);
cmd.Connection = conn;
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
conn.Open();
adapter.Fill(ds, tableName);
}
finally
{
conn.Close();
}
return ds;
}
// на моей странице ASCX я называю метод, как так:
protected void Page_Load(object sender, EventArgs e)
{
//instantiate our class
MyClass DB = new MyClass();
// grab the table of data
DataTable dt = DB.GetSuppliers().Tables["SuppliersList"];
//loop through the results
foreach (DataRow row in dt.Rows)
{
this.supplierslist.InnerHtml += Server.HtmlEncode(row["Address"].ToString()) + "<br/>";
this.supplierslist.InnerHtml += "<b>Tel: </b>" + Server.HtmlEncode(row["Telephone"].ToString()) + "<p/>";
}
}
}
Кто-нибудь хотел бы предложить улучшения?
Является ли мой цикл «уровня данных» или «уровнем представления», должен ли цикл быть внутри класса, и я просто возвращаю форматированную строку, установленную в наборе данных?
Спасибо за все большие советы
Привет WOMP, если я использую 'с помощью' заявления, мне еще нужно conn.Close(); в моем методе FillDataSet? – Melt
Нет, метод Dispose SqlConnection позаботится об этом для вас. Для других объектов, о которых вы не знаете наверняка, никогда не боится быть явным и оставить его. – womp