Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/55: Рейтинг темы: голосов - 55, средняя оценка - 4.51
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163

Вызов хранимых процедур и ее вывод

18.11.2013, 18:17. Показов 11104. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая, я создал строку подключения и открыл соединение
C#
1
2
3
                SqlCommand comm = connection.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "exec DishesCaloric 123";
вызвал хранимую процедуру, исправте если неправильно, как мне вывести результат выборки этой процедуры в dataGridview?

Попробовал так

C#
1
2
3
4
5
6
                DataSet ds_5 = new DataSet();
                SqlCommand comm = connection.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "exec DishesCaloric 123";
                dataAdapter.Fill(ds_5, "DishesCaloric");
                dataGridView1.DataSource = ds_5.Tables[0].DefaultView;
но ругается на Fill...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2013, 18:17
Ответы с готовыми решениями:

Вызов хранимых процедур
Здравствуйте, подскажите пожалуйста, как мне правильно сделать: есть форма, на форме расположены элементы, dataGridView, TextBox и button,...

YII вызов хранимых процедур
Доброго вечера. Как в yii вызвать хранимую процедуру БД postgresql. Стандартными методами все добавляется, а с ХП ни как.

Вызов хранимых процедур C++ Builder 6
Здраствуйте. Как можно открыть набор данных с помощью хранимой процедуры. СУБД - MS SQL Server (MSDE). Спасибо тем, кто...

15
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
18.11.2013, 18:54
попробуйте обычным запросом:
T-SQL
1
Select * from DishesCaloric();
в скобках параметры при необходимости.
0
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163
18.11.2013, 19:01  [ТС]
C#
1
2
3
4
5
                DataSet ds_4 = new DataSet();
                SqlCommand sql_4 = new SqlCommand("select  * from DishesCaloric(123)", connection);
                dataAdapter.SelectCommand = sql_4;
                dataAdapter.Fill(ds_4, "DishesCaloric");
                dataGridView1.DataSource = ds_4.Tables[0].DefaultView;
Недопустимое имя объекта "DishesCaloric");
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
18.11.2013, 19:10
перепроверьте название созданной процедуры.
или укажите полное название процедуры([БД].[схема].[название])
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
18.11.2013, 20:05
C#
1
2
3
4
5
6
7
8
9
10
11
using (var connection = new SqlConnection(""))
            {
                connection.Open();
                SqlCommand comm = connection.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "DishesCaloric";
                comm.Parameters.AddWithValue("@имяпараметра", "123");
                DataTable dt = new DataTable();
                dt.Load(comm.ExecuteReader());
                dataGridView1.DataSource = dt.DefaultView;
            }
где "имяпараметра" наименование параметра в процедуре.
2
2 / 2 / 4
Регистрация: 13.02.2011
Сообщений: 163
18.11.2013, 20:59  [ТС]
Здорово помог! Сразу все запилил, все пашет, у меня еще один вопрос я пишу:

C#
1
2
3
4
5
                DataSet ds_1 = new DataSet();
                SqlCommand sql_3 = new SqlCommand("select distinct * from Spisok(123)", connection);
                dataAdapter.SelectCommand = sql_3;
                dataAdapter.Fill(ds_1, "Spisok");
                dataGridView1.DataSource = ds_1.Tables[0].DefaultView;
И в итоге мне показывает пустые две строки в дата гридее, в чем я не прав?, а другие две функции частично, а хотелось бы чтобы они отображали все колонки при выборке в смысле показывали всю инфу о найденных вещах в датагриде или это функции надо переписывать?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
18.11.2013, 21:04
Обратите внимание на свойство колонки GridView "DataPropertyName", если колонка пустая, то это может означать только то, что в выборке нету столбцов с таким наименованием. Надо посмотреть что приходит в выборке и сравнить с тем, что прописано в колонках GridView.
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.11.2013, 11:47
SKyzZz, а какой результат выдает этот же запрос в менеджере ?
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
19.11.2013, 12:29
Цитата Сообщение от Learx Посмотреть сообщение
Select * from DishesCaloric();
а в где это работает?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
19.11.2013, 12:37
Цитата Сообщение от pincet Посмотреть сообщение
а в где это работает?
Работает в SQL Server, если вызываемый объект есть табличная функция
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
19.11.2013, 12:39
Так здесь вроде про ХП речь шла?
0
438 / 362 / 100
Регистрация: 29.06.2010
Сообщений: 981
Записей в блоге: 1
19.11.2013, 12:42
Цитата Сообщение от pincet Посмотреть сообщение
Так здесь вроде про ХП речь шла?
Вопросы к ТС
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.11.2013, 12:56
pincet, MS Sql
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
19.11.2013, 13:13
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ALTER PROCEDURE [dbo].[temp]
                @par2 int
                ,@par3 int
                
 
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
 
    -- Insert statements for procedure here
    select @par2+@par3
END
T-SQL
1
select * from temp(1,2)
Msg 208, Level 16, State 3, Line 1
Invalid object name 'temp'.

T-SQL
1
select @@version
Microsoft SQL Server 2008 (SP2) - 10.0.4064.0 (X64) Feb 25 2011 13:56:11 Copyright (c) 1988-2008 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

ЧЯДНТ?
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
19.11.2013, 15:12
pincet, прошу прощения это действительно для функций, возвращающих табличное значение
0
 Аватар для Worldmen
5 / 8 / 4
Регистрация: 31.08.2013
Сообщений: 350
27.08.2014, 01:09
А у меня проблема с получением данных от процедуры. Я делаю так:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
       public List<AbonentsStreet> GetProAbonentsStreets(int id)
        {   // вызов хранимой процедуры
            List<AbonentsStreet> result = new List<AbonentsStreet>(); 
            using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnect"].ConnectionString) )
            {
                connection.Open();
                SqlCommand comm = connection.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "get_AboentsStreet";
                comm.Parameters.AddWithValue("@idgorod", id);
                DataTable dt = new DataTable();
                dt.Load(comm.ExecuteReader());
                result = dt.DefaultView;
            }
            return result;
        }

У меня проблема в строке result = dt.DefaultView; - неявное преобразование не возможно. Структура переменных одинакова. (не судите строго - я начинаю изучать C#)

Добавлено через 2 часа 17 минут
Я переделал немного по другому и работает, но думаю не совсем это правильно:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
       public DataView GetProAbonentsStreets(int id)
        {   // вызов хранимой процедуры
            using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnect"].ConnectionString) )
            {
                connection.Open();
                SqlCommand comm = connection.CreateCommand();
                comm.CommandType = CommandType.StoredProcedure;
                comm.CommandText = "get_AboentsStreet";
                comm.Parameters.AddWithValue("@idgorod", id);
                DataTable dt = new DataTable();
                dt.Load(comm.ExecuteReader());
                
                return dt.DefaultView;
            }
           
        }
Потом вызываю ее:
C#
1
2
3
4
5
        private void cbGorod_SelectedIndexChanged(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(cbGorod.SelectedValue.ToString());
            dataGridView1.DataSource = Repository.Instance.GetProAbonentsStreets(id);
        }
cbGorod - это comboBox.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.08.2014, 01:09
Помогаю со студенческими работами здесь

Вызов хранимых процедур в теле транзакции
Есть хранимая процедура примерно такого содержания: CREATE PROCEDURE... .. AS .. BEGIN TRANSACTION trWORK EXEC Proc1.. EXEC...

Использование хранимых процедур
Суть: Есть две хранимые процедуры, А и Б А - главная, Б - дочерняя А должна вызывать Б заданное число раз это А ...

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

Декорирование хранимых процедур
есть ли возможность навесить метаинформацию на хранимую процедуру, выполняя create procedure, по типу аттрибутов .net?

Создание хранимых процедур
Здравствуйте! Возник следующий вопрос. Возможно ли написание собственных хранимых процедур в какой либо среде для создания Баз Данных....


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru