Форум программистов, компьютерный форум, киберфорум
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/29: Рейтинг темы: голосов - 29, средняя оценка - 4.93
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
1

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

07.04.2017, 03:42. Показов 5515. Ответов 7

Author24 — интернет-сервис помощи студентам
Доброго времени суток. В C# я ламер. Стоит visual studio, SQL Server 2008. Есть хранимая процедура в SQL на добавление нового пользователя. Хочу вызвать эту процедуру в новом окне с клика по батону. Тему 7 ЧаВо читал, просмотрел кучу тем с форума по вызову хранимок, но так и не понял. Буду признателен, если покажете как это делается.

Хранимка SQL:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 CREATE PROCEDURE [Добавление нового пользователя]
    @Фамилия VARCHAR(20)='',
    @Имя VARCHAR(20)='',
    @Отчество VARCHAR(20)='',
    @Паспорт VARCHAR(11)='',
    @Улица VARCHAR(MAX)='',
    @Дом VARCHAR(3)='',
    @Квартира VARCHAR(3)='',
    @Контактный_телефон VARCHAR(15)=''
AS
BEGIN
    SET NOCOUNT ON;
    INSERT INTO dbo.Пользователи
    VALUES (@Фамилия,@Имя,@Отчество,@Паспорт,@Улица,@Дом,@Квартира,@Контактный_телефон)
END
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.04.2017, 03:42
Ответы с готовыми решениями:

Вызов хранимой процедуры
Как вызвать хранимую процедуру в БД Access через Viasual Studio 2015 Community. Хранимые процедуры:...

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

Вызов хранимой процедуры
Привет! У меня есть база данных и запрос, написанный на SQL в сишарпе. Таблица из базы данных...

Вызов хранимой процедуры в с#
Хочу обновить бд с помощью хранимой процедуры ALTER procedure . @id_TP int, @id_worker int, @DT...

7
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
07.04.2017, 14:19 2
TheMakZJ, как-то так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using (var dbConn = new SqlConnection(connectionString))
{
    var dbCmd = new SqlCommand("[Добавление нового пользователя]", dbConn);
    dbCmd.CommandType = CommandType.StoredProcedure;
    dbCmd.Parameters.AddWithValue("@Фамилия", lastName);
    dbCmd.Parameters.AddWithValue("@Имя", firstName);
    dbCmd.Parameters.AddWithValue("@Отчество", middleName);
    dbCmd.Parameters.AddWithValue("@Паспорт", passport);
    dbCmd.Parameters.AddWithValue("@Улица", street);
    dbCmd.Parameters.AddWithValue("@Дом", house);
    dbCmd.Parameters.AddWithValue("@Квартира", apartment);
    dbCmd.Parameters.AddWithValue("@Контактный_телефон", phone);
 
    dbConn.Open();
    dbCmd.ExecuteNonQuery();
}
Можно также указать типы параметров и их размерности (необязательно если данные точно имеют правильный размер)
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using (var dbConn = new SqlConnection(connectionString))
{
    var dbCmd = new SqlCommand("[Добавление нового пользователя]", dbConn);
    dbCmd.CommandType = CommandType.StoredProcedure;
    dbCmd.Parameters.Add("@Фамилия", SqlDbType.VarChar, 20).Value = lastName;
    dbCmd.Parameters.Add("@Имя", SqlDbType.VarChar, 20).Value = firstName;
    dbCmd.Parameters.Add("@Отчество", SqlDbType.VarChar, 20).Value = middleName;
    dbCmd.Parameters.Add("@Паспорт", SqlDbType.VarChar, 11).Value = passport;
    dbCmd.Parameters.Add("@Улица", SqlDbType.VarChar, -1).Value = street;
    dbCmd.Parameters.Add("@Дом", SqlDbType.VarChar, 3).Value = house;
    dbCmd.Parameters.Add("@Квартира", SqlDbType.VarChar, 3).Value = apartment;
    dbCmd.Parameters.Add("@Контактный_телефон", SqlDbType.VarChar, 15).Value = phone;
 
    dbConn.Open();
    dbCmd.ExecuteNonQuery();
}
1
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 60
07.04.2017, 17:21 3
OwenGlendower, а как быть с параметром output, как его прописать и как получить его значение?
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @a        
       ,@b 
 
EXEC @a = Obj_Insert
                 @qwe1            
                ,@b = @b output
                ,@qwe3  
                ,@qwe4  
                ,@qwe5    
                ,@qwe6         
  
SELECT @a 
      ,@b
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
07.04.2017, 17:37 4
IvanovaNA, как-то так
C#
1
2
3
4
5
6
SqlParameter prm = new SqlParameter("@b", SqlDbType.VarChar, 10, ParameterDirection.Output, true, 0, 0, null, DataRowVersion.Current, DBNull.Value);
dbCmd.Parameters.Add(prm);
 
dbCmd.ExecuteNonQuery();
 
string s = (string)prm.Value;
Ключевое это ParameterDirection.
1
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 60
07.04.2017, 17:52 5
OwenGlendower, спасибо! попробую
А numeric(15,0) в SqlDbType это какой тип?
0
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
07.04.2017, 17:55 6
IvanovaNA, ответ на этот вопрос можно найти в документации
SQL Server Data Type Mappings
1
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
07.04.2017, 22:50  [ТС] 7
OwenGlendower, Премного благодарен, все работает даже лучше, чем хотел))
0
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
09.04.2017, 04:52  [ТС] 8
OwenGlendower, Будь добр, подскажи еще один момент. Есть батон, через него вызывается хранимая процедура на добавление клиента. Трабл в том, что ХП не срабатывает, если в таблице, в которую пытаюсь добавить юзера Код_клиента не разрешает значение NULL, если разрешить NULL, то добавление происходит но после этого таблица не открывается и выдает следующую ошибку(скрин ниже)
Миниатюры
Вызов хранимой процедуры в форме  
0
09.04.2017, 04:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2017, 04:52
Помогаю со студенческими работами здесь

Вызов хранимой процедуры
Добрый день У меня есть процедура хранимая в MySQL на добавление строки CREATE DEFINER =...

Вызов хранимой процедуры
есть хранимая процедура. Надо ее вызвать и что бы она заменила один столбец в БД. если что проект...

Вызов хранимой процедуры из MySQL
Сразу скажу что в vs 2010 работал мало и только перехожу на него с Delphi, поэтому прошу сильно не...

Вызов хранимой процедуры в FirebirdSQL
Вызываю хранимую процедуру в FirebirdSQL. Вот так: FbCommand res = new...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru