从存储过程返回多个表

在我的winform应用程序中,我有以下场景:

我想在一个事件上获得多个表。 在single server cycle,中将所有表作为dataset返回single server cycle,或者每次获取一个表并separate server cycle for each table使用separate server cycle for each table哪一个更好? 一个又一个有什么优势?

通常的方法是立即获得所有。

只需构造您的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]; 

如果单独加载每个表并使用线程,则可以大大提高性能。

数据集也非常重…所以尽可能避免使用它们。