Измените схему datatable и tableadapter во время выполнения в соответствии с хранимой процедурой. C # - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть DataSet и TableAdapter для таблицы в этом DataSet. Проблема в том, что TableAdapter использует хранимую процедуру для заполнения DataTable, но количество возвращаемых столбцов может быть другим. Как я могу изменить схему DataTable во время выполнения, чтобы получить все столбцы из хранимой процедуры?

1 Ответ

0 голосов
/ 02 сентября 2011

По-моему, отбросьте идею использования DataAdapter, это совершенно не нужно. Сделайте это, чтобы получить DataTable вместо:

using(SqlConnection con = new SqlConnection("Conectionstring"))
{
    con.Open();
    using (SqlCommand commnand= new SqlCommand("StoredProcName",con))
    {
             command.CommandType=CommandType.StoredProcedure;
             SqlDataReader reader = command.ExecuteReader();
             DataTable table = new DataTable();
             table.Load(reader);
             return table;
    }
}

Теперь не имеет значения, сколько столбцов вы возвращаете из процедуры, таблица данных будет содержать все из них.

РЕДАКТИРОВАТЬ: Добавьте следующий раздел в ваш файл Web.config ниже раздела <configuration>, заменив фактическую строку подключения вашей. Вы должны быть в состоянии скопировать это из файла Ваших настроек.

А теперь создайте свое SqlConnection следующим образом:

SqlConnection con 
= new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))

Обратите внимание, что "ConnectionString" является атрибутом имени строки подключения в Web.Config.

См. Другой пример здесь, на случай, если не очень ясно.

...