Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Получение данных от хранимой процедуры


Автор: albert21 13.4.2006, 20:44
Всем привет!
Цель - выполнить следующий запрос и сохранить полученные данные в DataTable:
Код

Select Book.id_book, Book.Название, Book.Издательство, Book.Год, Book.УДК, Book.ББК, Book.ISBN, Book.Количество_всего, RelationBookReader.id_relation
From Book, RelationBookReader where RelationBookReader.id_reader=@k and Book.id_book=RelationBookReader.id_book;


где @k это число которое надо подставить. Как выполнить такой запрос в DataSet не обращаясь лишний раз к БД я не знаю (может кто подскажет?)

Я написал хранимую процедуру следующего вида:
Код

CREATE PROC get_book_debtor
@k int
AS
Select Book.id_book, Book.Название, Book.Издательство, Book.Год, Book.УДК, Book.ББК, Book.ISBN, Book.Количество_всего, RelationBookReader.id_relation
From Book, RelationBookReader where RelationBookReader.id_reader=@k and Book.id_book=RelationBookReader.id_book;


В проге выполняю её:
Код

            OleDbCommand command = new OleDbCommand("get_book_debtor", Connection);
            command.CommandType = CommandType.StoredProcedure;
            OleDbParameter workParam = null;
            
            workParam = command.Parameters.Add(new OleDbParameter("@k",  OleDbType.Integer));
            workParam.Direction = ParameterDirection.Input;
            workParam.Value = id_reader;

                Connection.Open();
                OleDbDataReader reader = command.ExecuteReader();
                Connection.Close();

но как получить данные процедуры в виде набора записей DataRow (одной DataTable)???

Автор: albert21 14.4.2006, 12:49
Код

DataTable tbl=new DataTable();
tbl.Load(reader);


Так я решил проблему! Но мне нужно выполнить выборку из нескольких таблиц(указанны в предидущем посте запрос) не обращаясь к БД, а использовать только данные ДатаСет`а!!!

Должно же быть такое решение - это логично!!! Что, никто не знает??? Очень надо!!!

Автор: mr.DUDA 14.4.2006, 22:12
albert21, можно выполнить объединение двух датасетов с помощью метода DataSet.Merge.

Автор: albert21 15.4.2006, 13:29
Цитата

можно выполнить объединение двух датасетов с помощью метода DataSet.Merge.

mr.DUDA, как это может помочь? Пример можешь обрисовать? smile

Автор: mr.DUDA 15.4.2006, 19:04
Цитата(albert21 @ 14.4.2006, 11:49 Найти цитируемый пост)
Но мне нужно выполнить выборку из нескольких таблиц(указанны в предидущем посте запрос) не обращаясь к БД, а использовать только данные ДатаСет`а!!!


albert21, где в твоём примере "данные ДатаСет'а", которые "нужно использовать" для получения результата ? Я имел ввиду, что если есть к примеру два датасета с результатами разных запросов, то их можно слить в один методом Merge.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)