Определите имена таблиц для результатов нескольких SQL-запросов в одном запросе - PullRequest
5 голосов
/ 01 ноября 2008

Например, если я запускаю следующий запрос:

select * from table1
select * from table2

И запустить его с помощью адаптера БД (C #). Я получаю набор данных с двумя таблицами. Как я могу определить имена для таблиц результатов в SQL?

Я могу сделать это только внутри SQL. У меня нет доступа к коду C #.

1 Ответ

9 голосов
/ 01 ноября 2008

@ Тимоти Хоури: Это можно сделать! РЕДАКТИРОВАТЬ: но не на уровне SQL!

Вы можете использовать TableMappings в DataAdapter.

Если SelectCommand DataAdapter возвращает несколько наборов результатов, DataAdapter использует сопоставления таблиц для заполнения соответствующих DataTables в DataSet. По умолчанию первый набор результатов будет заполнен в DataTable с именем «Таблица», а второй набор результатов будет заполнен в DataTable с именем «Table1» и т. Д.

SqlDataAdapter sqlDa = new SqlDataAdapter();
SqlCommand selectCmd = new SqlCommand();
selectCmd.CommandText = "spReturnMultpileResultSets";
selectCmd.CommandType = CommandType.StoredProcedure;
selectCmd.Connection = this.sqlConnection1;
sqlDa.SelectCommand = selectCmd;

// Add table mappings to the SqlDataAdapter
sqlDa.TableMappings.Add("Table", "Customers");
sqlDa.TableMappings.Add("Table1", "Orders");

// DataSet1 is a strongly typed DataSet
DataSet1 ds = new DataSet1();

this.sqlConnection1.Open();

sqlDa.Fill(ds);

this.sqlConnection1.Close();

Refs:

http://blogs.msdn.com/vsdata/archive/2007/03/08/tableadapter-multiple-result-sets.aspx http://www.eggheadcafe.com/software/aspnet/32696845/strongly-typed-datasets.aspx

...