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

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

07.04.2017, 03:42. Просмотров 1351. Ответов 7

Доброго времени суток. В 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2017, 03:42
Ответы с готовыми решениями:

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

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

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

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

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

7
OwenGlendower
Супер-модератор
Эксперт .NET
10595 / 9107 / 3883
Регистрация: 17.03.2014
Сообщений: 18,236
Записей в блоге: 1
Завершенные тесты: 2
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
IvanovaNA
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
OwenGlendower
Супер-модератор
Эксперт .NET
10595 / 9107 / 3883
Регистрация: 17.03.2014
Сообщений: 18,236
Записей в блоге: 1
Завершенные тесты: 2
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
07.04.2017, 17:37
IvanovaNA
1 / 1 / 0
Регистрация: 20.09.2016
Сообщений: 60
07.04.2017, 17:52 5
OwenGlendower, спасибо! попробую
А numeric(15,0) в SqlDbType это какой тип?
0
OwenGlendower
Супер-модератор
Эксперт .NET
10595 / 9107 / 3883
Регистрация: 17.03.2014
Сообщений: 18,236
Записей в блоге: 1
Завершенные тесты: 2
07.04.2017, 17:55 6
IvanovaNA, ответ на этот вопрос можно найти в документации
SQL Server Data Type Mappings
1
TheMakZJ
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
07.04.2017, 22:50  [ТС] 7
OwenGlendower, Премного благодарен, все работает даже лучше, чем хотел))
0
TheMakZJ
0 / 0 / 1
Регистрация: 24.05.2016
Сообщений: 21
09.04.2017, 04:52  [ТС] 8
OwenGlendower, Будь добр, подскажи еще один момент. Есть батон, через него вызывается хранимая процедура на добавление клиента. Трабл в том, что ХП не срабатывает, если в таблице, в которую пытаюсь добавить юзера Код_клиента не разрешает значение NULL, если разрешить NULL, то добавление происходит но после этого таблица не открывается и выдает следующую ошибку(скрин ниже)
0
Миниатюры
Вызов хранимой процедуры в форме  
09.04.2017, 04:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2017, 04:52

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

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

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


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

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

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