从存储过程返回多个表

Nit*_*esh 25 .net c# sql-server stored-procedures winforms

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

我想在一个事件上获得多个表.返回所有表如datasetsingle server cycle,或在时间得到一个表,使用separate server cycle for each table哪一个更好?一个又一个有什么优势?

bal*_*dre 50

通常的方法是一次性获得所有.

只是构建你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();
    }
}
Run Code Online (Sandbox Code Playgroud)

例如,如果您在SP中返回2个表,例如:

SELECT * FROM [TableA];
SELECT * FROM [TableB];
Run Code Online (Sandbox Code Playgroud)

你可以访问这个表:

DataTable tableA = ds.Tables[0];
DataTable tableB = ds.Tables[1];
Run Code Online (Sandbox Code Playgroud)

  • 在Windows应用程序中,我建议的示例更好. (2认同)