从存储过程返回多个表

本文关键字:返回 存储过程 | 更新日期: 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];

如果您分别加载每个表并使用线程,您可以大大提高性能。

数据集的权重也非常大…所以尽量避免使用。