在我的winform应用程序中,我有以下场景:
我希望在单个事件上获得多个表。将dataset
中的所有表格作为single server cycle,
返回,或者及时获取一张表并使用separate server cycle for each table
哪一个更好?一个人有什么优势呢?
答案 0 :(得分:48)
通常的做法是一次性完成。
只需构建您的SELECT
,就会有DataSet
填充所有表格。
using (System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(myConnString))
{
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand())
{
cmd.CommandText = "myMultipleTablesSP";
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
System.Data.SqlClient.SqlDataAdapter adapter = new System.Data.SqlClient.SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
conn.Close();
}
}
例如,如果您在SP中返回2个表,例如:
SELECT * FROM [TableA];
SELECT * FROM [TableB];
您可以访问此表格:
DataTable tableA = ds.Tables[0];
DataTable tableB = ds.Tables[1];
答案 1 :(得分:1)
如果单独加载每个表并使用线程,则可以大大提高性能。
数据集也非常重...所以尽可能避免使用它们。