C# — несколько запросов DataSet

Я хочу создать DataSet с несколькими запросами. Затем добавьте строки, которые возвращает набор данных, в список. Это то, что у меня есть до сих пор. Моя SqlCommand содержит несколько запросов, я хочу добавить каждое значение из запроса в набор данных, а затем создать оператор foreach, чтобы получить все строки из набора данных в listbox

        SqlConnection con = new SqlConnection(connection);
        SqlCommand command = new SqlCommand("select ProductID AS ProductID from Products; Select CategoryName AS CategoryName from Categories; Select count(*) AS Total from Products", con);

        SqlDataAdapter sda = new SqlDataAdapter(command);

        DataSet set = new DataSet();           

        sda.Fill(set);

У кого-нибудь есть идея, как я мог это сделать? Большое спасибо заранее.


person Alan_C    schedule 04.04.2011    source источник
comment
Имеют ли запросы одинаковый формат результатов (имена и типы столбцов)?   -  person Kieren Johnstone    schedule 04.04.2011
comment
Нет, у каждого есть свое имя и тип. Я должен добавить столбец к запросу.   -  person Alan_C    schedule 04.04.2011


Ответы (1)


Как я вижу, вы создаете список из 3 очень разных данных, некоторых идентификаторов продуктов, некоторых названий категорий и количества продуктов. Это немного сбивает меня с толку. Однако.

Если, например, вы хотели, чтобы продукты и категории находились в одном списке, вы могли бы сделать

    select productname as dataname from products 
union 
select categoryname as dataname from categories
person BugFinder    schedule 04.04.2011
comment
Извините за путаницу, я хочу перечислить все строки в одном и том же списке, а не в разных списках. - person Alan_C; 04.04.2011
comment
То, что делает вышеприведенное, будет принимать все названия продуктов и названия категорий и возвращать их в 1 список. Я понял, что это не разные списки, поэтому некоторые числовые PID и количество продуктов кажутся неуместными, и все они идут в один и тот же список. - person BugFinder; 04.04.2011
comment
@BugFinder: когда я добавляю оператор union в свой код, как и ваш, он не работает для мужчин, я получаю только ProductName в своем списке - person Alan_C; 04.04.2011
comment
Вам нужно, чтобы все 3 типа данных были одинаковыми. Какой счетчик (*) возвращает целое число, где имя категории, конечно, является строкой.. так что я все еще озадачен, почему вы хотите, чтобы список этих элементов был объединен.. - person BugFinder; 04.04.2011
comment
@BugFinder: я собираюсь создать HTML-отчет на основе этих элементов. - person Alan_C; 04.04.2011
comment
Итак, если ваши данные были возвращены {101,233,6728,Shoes, Drills, Cakes, 238}, как вы собираетесь их использовать? Конечно, вы хотите получить идентификаторы продуктов, выполнить эту часть отчета, получить категории, выполнить эту часть, а затем отобразить количество продуктов ... или вы пытаетесь сделать что-то большее, чем показано в исходном запросе, например , вы хотите узнать идентификатор отдельного продукта, в какие категории он входит, а затем сколько других продуктов находится в этих отдельных категориях. - person BugFinder; 04.04.2011
comment
@BugFinder: я хочу показать всю информацию в одном отчете. В отчете у меня есть разные разделы для каждого запроса. В первом разделе я показываю информацию о продуктах, во втором разделе я показываю информацию о категориях, а в третьем разделе я показываю, сколько продуктов у меня есть в моей таблице продуктов. - person Alan_C; 04.04.2011
comment
Затем придерживайтесь 3 отдельных запросов. Если вы этого не сделаете, вы очень усложните себе жизнь. Запустите каждый по очереди для 3 разделов, которые вы хотели. - person BugFinder; 04.04.2011
comment
@BugFinder: это мой ReportSource использует один набор данных. Если придерживаться 3 отдельных запросов, у меня не будет всей информации в одном отчете. Я мог бы создавать разные отчеты для каждого запроса, но мне нужна вся информация в одном отчете. - person Alan_C; 04.04.2011
comment
Итак, я возвращаюсь к вопросу. Если у вас есть { 101 233 6728, Обувь, Сверла, Торты, 238 } в качестве ваших данных, ваш отчет не будет знать, где что-то остановилось и где началось новое. Я собираюсь отказаться от этого, так как ясно, что я не смогу предложить решение - person BugFinder; 04.04.2011