Подтвердить что ты не робот

Возврат нескольких таблиц из хранимой процедуры

В моем приложении winform у меня есть следующий сценарий:

Я хочу получить несколько таблиц в одном событии. Возврат всех таблиц как dataset в single server cycle, или получение одной таблицы во времени и с помощью separate server cycle for each table, какой из них лучше? Каковы преимущества один над другим?

4b9b3361

Ответ 1

Обычный способ - получить все сразу.

просто создайте 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();
    }
}

если, например, вы возвращаете 2 таблицы в своем SP, например:

SELECT * FROM [TableA];
SELECT * FROM [TableB];

вы получите доступ к этим таблицам следующим образом:

DataTable tableA = ds.Tables[0];
DataTable tableB = ds.Tables[1];

Ответ 2

Если вы загружаете каждую таблицу отдельно и используете потоки, вы можете значительно повысить производительность.

Наборы данных также очень тяжелые... поэтому старайтесь избегать их, если это возможно.