以下两种都可以帮定到Repeater1上,但是有什么区别呢?那位高人能详细说明一下。
=====================================================
方法一
public static DataTable ExecuteTable(string strSQL)
{
DataTable dt = new DataTable();
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(strSQL, connection);
connection.Open();
using (SqlDataReader reader =cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(reader);
}
return dt;
}
---------邦定数据-----------
string sql = "SELECT * FROM Role";
DataTable dt = help.ExecuteTable(sql);
this.Repeater1.DataSource = dt;
this.Repeater1.DataBind();
======================================================
方法二、
public IList<user> ExecuteIList(string strSQL)
{
IList<user> myTable = new List<user>();
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(strSQL, connection);
connection.Open();
using (SqlDataReader rdr = SqlHelper.ExecuteReader(CommandBehavior.CloseConnection))
{
while (rdr.Read())
{
user cat = new usr(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2));
myTable.Add(cat);
}
}
return myTable;
}
---------邦定数据-----------
string sql = "SELECT * FROM UDS_Role";
this.Repeater1.DataSource = help.ExecuteIList(sql);
this.Repeater1.DataBind();
首先让我选择的话,我选择第二种方法
2种方法都是通过DataReader来读取的,而第一种方法又把结果放到了DataTable中,DataTable会开辟内存空间,个人感觉性能会比较低
如果使用第二种,在读的时候拼接起来,不绑定到rpt上,直接输出来。效果和第一个还有差别。
但是你一个个添加到list里,不也是在内存中吗,Rpt内部还得做序列化。
有很多好处,比如分层开发中,前端开发人员使用 List<T> 绑定可以有智能提示,不必去关心Datatable的行与列,
<%#(((ApplyClass)Container.DataItem)).ApplyClassName%>
相关Datatable而言,泛型更加面向对象。
不过在填充的时候比较麻烦。
以上二种方法都不好.
其实如果真正要高效率的话
直接用stringbulid输出的效率最高了!!!