Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.87/38: Рейтинг темы: голосов - 38, средняя оценка - 4.87
jarrhead
1 / 1 / 0
Регистрация: 11.05.2010
Сообщений: 11
1

Запуск хранимой процедуры через C# и вывод результата в DataGrid

22.03.2012, 16:22. Просмотров 7261. Ответов 3
Метки нет (Все метки)

Доброго времени суток, уважаемое сообщество! Прошу помощи в нахождении ошибки.
есть таблица в mssql. есть хранимая процедура, которая выводит список строк. сама процедура рабочая, на самом сервере sql функционирует корректно.
сама процедура
SQL
1
2
3
4
5
6
7
8
9
10
ALTER PROCEDURE [dbo].[PROCEDURE]
    @ID CHAR(40),
    @startdate datetime,
    @enddate datetime
 
AS
    SELECT     ID, DATE, Road
    FROM         KPP
    WHERE     (ID = @ID) AND (DATE BETWEEN  @startdate AND  @enddate)     
RETURN
пишу вебчасть для SharePoint2007. на вебчасти есть 2 поля с начальной и конечной датами и текстовое поле для ввода ID. есть кнопка, при нажатии которой, должен посылаться запрос в БД и возвращаться результат в виде таблицы DataGrid.
код кнопки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
        protected void Search_Click(object sender, EventArgs e)
        {
 
            DataSet dataSet = null;
 
            SqlConnection conn = new SqlConnection("Data Source = localhost; Initial Catalog = portal; Integrated Security = SSPI");
 
            using (SqlCommand cmd = new SqlCommand("Procedure", conn))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "Procedure";
                conn.Open();
                SqlParameter param = new SqlParameter();
                param.ParameterName = "@ID";
                param.SqlDbType = SqlDbType.Char;
                param.Value = txtID.Text;
                param.Size = 40;
                param.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(param);
 
                param = new SqlParameter();
                param.ParameterName = "@startdate";
                param.Value = Convert.ToDateTime(startdatetimepicker.SelectedDate.Date);
                param.SqlDbType = SqlDbType.DateTime;
                param.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(param);
 
                param = new SqlParameter();
                param.ParameterName = "@enddate";
                param.Value = Convert.ToDateTime(enddatetimepicker.SelectedDate.Date);
                param.SqlDbType = SqlDbType.DateTime;
                param.Direction = ParameterDirection.Input;
                cmd.Parameters.Add(param);
 
                cmd.ExecuteReader();
 
                try
                {
                    SqlDataAdapter adapter = new SqlDataAdapter("Procedure", conn);
                    dataSet = new DataSet("root");
                    adapter.Fill(dataSet, "KPP");
                }
                catch (SqlException x)
                {
                    messages.Text += x.Message;
                }
                catch (Exception x)
                {
                    messages.Text += x.Message;
                }
 
                //Bind Data
                try
                {
                    grid.DataSource = dataSet;
                    grid.DataMember = "KPP";
                    grid.DataBind();
                }
                catch (Exception x)
                {
                    messages.Text += x.Message;
                }
                conn.Close();
            }
}
при нажатии на кнопку выдает "There is already an open DataReader associated with this Command which must be closed first.The IListSource does not contain any data sources."
помогите, плиз, найти ошибку. второй день мучаюсь
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 16:22
Ответы с готовыми решениями:

Загрузка данных из хранимой процедуры в DataGrid
В целом вот, раньше использовал запрос, что бы вывести данные на DataGrid. ...

Вывод хранимой процедуры SELECT
Здравствуйте! Есть база. Создал хранимую процедуру для вывода данных. Написал...

Вывод хранимой процедуры из SQL в C#
USE GO /****** Object: StoredProcedure . Script Date: 23.06.2017...

Вывод хранимой процедуры по Combox1 в datagridview
Вывод таков: Не могу вывести данные Хранимой процедуры из бд ms sql server в...

Вызов хранимой процедуры через форму
Имеется хранимая процедура: SELECT Days.Days, Time.Time, learner.FIO...

3
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
22.03.2012, 16:29 2
1. Удали эту строчку - адаптер в риадере не нуждыется.

C#
1
    cmd.ExecuteReader();
2. Запрос с вызовом процедуры должен быть "ProcedureName(@ID, ...)"
3. Добавь строчку
C#
1
cmd.Connection = conn;
4. Используй адаптер так:
C#
1
2
3
SqlDataAdapter ada = new SqlDataAdapter();
ada.SelectCommand = cmd;
.....
2
jarrhead
1 / 1 / 0
Регистрация: 11.05.2010
Сообщений: 11
22.03.2012, 16:36  [ТС] 3
немного в шоке от столь оперативного ответа Вам, уважаемый Learx, огромный респект и человеческое спасибо за помощь все заработало
0
Learx
1046 / 853 / 194
Регистрация: 31.03.2010
Сообщений: 2,490
22.03.2012, 16:56 4
всегда пожалуйста
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2012, 16:56

Вызов метода хранимой процедуры через TabelAdapter
Такая проблема. Есть dataset В датасете есть TableAdapter для которого...

Подключение к Access через OleDB и вывод результата запроса в textBox
Имеется подключение к Access через OleDB мне необходимо чтобы результат...

Создание хранимой процедуры в C#
Есть БД в SQL. Интерфейс создается на C#. Как создать такую хранимую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru