从存储过程返回多个表
本文关键字:返回 存储过程 | 更新日期: 2023-09-27 18:07:04
在我的winform应用程序中,我有以下场景:
我想在一个事件上获得多个表。在single server cycle,
中返回所有表作为dataset
或一次获得一个表并使用separate server cycle for each table
哪个更好?一个比另一个有什么优势?
通常的方法是一次得到所有。
只是构造你的SELECT
's,你将有一个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];
如果您分别加载每个表并使用线程,您可以大大提高性能。
数据集的权重也非常大…所以尽量避免使用。