powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры из Си Шарп
25 сообщений из 46, страница 1 из 2
Вызов хранимой процедуры из Си Шарп
    #39839435
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Подскажите ссылку на самый простой и понятный чайнику (пару недель опыта программирования на Си Шарп) пример вызова хранимой процедуры (Сиквел Сервера) из Си Шарп.

Мне сказали что стандартного метода нет и надо изучать фреймворк.

Спасибо.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39839451
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roust_mДобрый день,

Подскажите ссылку на самый простой и понятный чайнику (пару недель опыта программирования на Си Шарп) пример вызова хранимой процедуры (Сиквел Сервера) из Си Шарп.

Мне сказали что стандартного метода нет и надо изучать фреймворк.

Спасибо.

Неистовый респект этим людям
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39839453
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39839467
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот подробное руководство.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39839486
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roust_mПодскажите ссылку на самый простой и понятный чайнику (пару недель опыта программирования на Си Шарп) пример вызова хранимой процедуры (Сиквел Сервера) из Си Шарп. https://metanit.com/sharp/ado.php
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842031
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
var connection = new SqlConnection("Data Source=Сервер баз данных;Initial Catalog=Имя базы данных;Integrated Security=True");
connection.Open();
var cmd = connection.CreateCommand();
cmd.CommandText = "exec Имя_хранимой_процедуры";
cmd.ExecuteNonQuery();
connection.Close();
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842066
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Worobjoff
Код: c#
1.
2.
3.
4.
5.
6.
var connection = new SqlConnection("Data Source=Сервер баз данных;Initial Catalog=Имя базы данных;Integrated Security=True");
connection.Open();
var cmd = connection.CreateCommand();
cmd.CommandText = "exec Имя_хранимой_процедуры";
cmd.ExecuteNonQuery();
connection.Close();


Не учите нуба дурному!

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
var connection = new SqlConnection("Data Source=Сервер баз данных;Initial Catalog=Имя базы данных;Integrated Security=True");

var cmd = connection.CreateCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Имя_хранимой_процедуры";
/*
 Тут будет создание параметров хранимой процедуры и присвоение им значений
*/
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842141
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинRoust_mДобрый день,

Подскажите ссылку на самый простой и понятный чайнику (пару недель опыта программирования на Си Шарп) пример вызова хранимой процедуры (Сиквел Сервера) из Си Шарп.

Мне сказали что стандартного метода нет и надо изучать фреймворк.

Спасибо.

Неистовый респект этим людям Это Австралия, там кенгуру.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842616
Супер_Пав
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Worobjoff
Код: c#
1.
2.
3.
4.
5.
6.
var connection = new SqlConnection("Data Source=Сервер баз данных;Initial Catalog=Имя базы данных;Integrated Security=True");
connection.Open();
var cmd = connection.CreateCommand();
cmd.CommandText = "exec Имя_хранимой_процедуры";
cmd.ExecuteNonQuery();
connection.Close();


Садись, 2.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842641
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с точки зрения вызова запроса, никакой магии нет, если выбрать CommandType.StoredProcedure, EXEC будет добавлен автоматически, как и весь набор передаваемых параметров. Убедиться в этом можно в исходниках SqlCommand.
Лично я, практически всегда использую CommandType.Text вместе с exec <procname> <params> и не вижу в этом ничего плохого. Если кто то докажет мне, что такой вызов хуже, буду рад.
Возможно с точки зрения информативности и читаемости, указание того, что это именно вызов процедуры лучше, но этого для меня недостаточно :) должны быть более веские причины
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842713
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Roman Mejtes,

С точки зрения читаемости лучше явно указать тип.

Ведь не всегда код выглядит так

Код: c#
1.
SqlCommand sql = new SqlCommand("exec TableSelect", con);



Часто бывает так

Код: c#
1.
2.
3.
string commandname = "TableSelect";
... //тут сто тыщь питьсот строк
SqlCommand sql = new SqlCommand(commandname, con);
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842719
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesexec <procname> <params> и не вижу в этом ничего плохогопередача параметров в виде строки - ну-ну
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842806
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRoman Mejtesexec <procname> <params> и не вижу в этом ничего плохогопередача параметров в виде строки - ну-нуБез разницы. Ну сам то оператор экранированной строкой все равно в коде останется, не так ли? Поэтому знающие люди и указали на ОРМ.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842815
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRoman Mejtesexec <procname> <params> и не вижу в этом ничего плохогопередача параметров в виде строки - ну-ну
Где?
Я в
Roman MejtesCommandType.Text вместе с exec <procname> <params>
вижу только перечисление имен параметров процедуры - типа
Код: c#
1.
var cmd = new SqlCommand("exec sys.sp_helplogins @loginname", connection)
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842829
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилRoman Mejtesexec <procname> <params> и не вижу в этом ничего плохогопередача параметров в виде строки - ну-нупараметры в виде строки не передаются
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842883
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic Hunter Поэтому знающие люди и указали на ОРМ.
А это что?
21930638
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842889
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цирк уехал, а клоуны остались.
Автор задал вопрос и исчез, т.е. "цирк уехал".
Для местных умников что отстали от своего цирка: Я здесь единственный кто ответил на заданный автором вопрос. Если вы здесь с единственной целью, разгонять свою скуку в рабочее время - к вам на форум никто ходить не будет.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842941
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffЦирк уехал, а клоуны остались.
Автор задал вопрос и исчез, т.е. "цирк уехал".
Для местных умников что отстали от своего цирка: Я здесь единственный кто ответил на заданный автором вопрос. Если вы здесь с единственной целью, разгонять свою скуку в рабочее время - к вам на форум никто ходить не будет.Вы явно вышли на бис и ждете когда начнутся аплодисменты :D
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39842949
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WorobjoffЦирк уехал, а клоуны остались.
Автор задал вопрос и исчез, т.е. "цирк уехал".
Для местных умников что отстали от своего цирка: Я здесь единственный кто ответил на заданный автором вопрос. Если вы здесь с единственной целью, разгонять свою скуку в рабочее время - к вам на форум никто ходить не будет.

ну, всё, писец форуму
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39850739
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинRoust_mДобрый день,

Подскажите ссылку на самый простой и понятный чайнику (пару недель опыта программирования на Си Шарп) пример вызова хранимой процедуры (Сиквел Сервера) из Си Шарп.

Мне сказали что стандартного метода нет и надо изучать фреймворк.

Спасибо.

Неистовый респект этим людям
Аналогично!)))
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39850775
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Cat2, 26 июл 19, 18:55 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1315008&msg=21935705][21935705]
>...Не учите нуба дурному!
<А если усложнить схему вызова хранимой процедуры из пользовательского метода. Попытаемся построить класс-обертку для работы с хранимыми процедурами.
- Первое, что нужно, то это убрать из обертки формирование параметров:
Код: c#
1.
2.
3.
/*
 Тут будет создание параметров хранимой процедуры и присвоение им значений
*/

и перенести эту работу в тело вызывающего метода,
- Второе, обработать параметры вызова в параметры запроса хранимой процедуры,
- Третье, попытаться сделать так, что при переходе от одной базы данных к другой (Oracle <--> MS SQL), менялся бы только класс-обертка.
Что-то подобное:
Код: 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.
    //-- Выполнение хранимой процедуры
    public static async Task Entity_SP(string spname, dlg_sp sp, object[][] psp, dlg_RowToEntity RowToEntity) {
      wspErr = null;
      int n = (psp==null)? 0: psp.Length;
      SqlParameter[] asp = new SqlParameter[n];
      try {
        for (int i=0;i<n;i++) { 
          switch (psp[i].Length) {
            case 2: asp[i] = new SqlParameter((string)psp[i][0], psp[i][1]); break;
            case 3:
              asp[i] = new SqlParameter((string)psp[i][0], SqlDbType.Binary, (int)psp[i][1]);
              asp[i].SqlValue = (byte[])psp[i][2];
              break;
          }
        }
        //{
        //str= (string)psp[i][0]; str = str.IndexOf(@"@") == 0 ? str : @"@" + str;
        //asp[i] = new SqlParameter(str, psp[i][1]);
        //}
        using (SqlConnection connection = new SqlConnection(гп.str_Соединение)) {
          connection.Open();
          SqlCommand command = new SqlCommand("", connection);
          command.Parameters.Clear();
          command.Parameters.AddRange(asp);
          command.CommandText = spname;
          command.CommandType = CommandType.StoredProcedure;

          //-- Формируем коллекцию из выборки
          using (reader = await command.ExecuteReaderAsync()) { sp(RowToEntity); }
        }
      }
      catch (Exception ex){ wspErr = ex.Message; }
    }
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39850959
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ВМоисеевпри переходе от одной базы данных к другой (Oracle <--> MS SQL)
И часто такие переходы бывают, что бы заранее к ним готовится?
Впрочем, можно не городить огород и использовать следующий синтаксис.

Код: c#
1.
command.Parameters.AddWithValue(parameterName, parameterValue)



Читаемость хуже, но эффективность одинакова. Главное, не передавать числа и даты в виде строк. Вернее передавать можно, но при этом надо думать головой.
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39851018
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Cat2, сегодня, 10:42 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1315008&msg=21952253][21952253]
>...Впрочем, можно не городить огород и использовать следующий синтаксис.
<Если принять Ваше предложение, то вызывающий будет зависим от типа базы данных (провайдера). Что, на мой взгляд, не есть хорошо. Делаю так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
      . . . 
      //-- Готовим параметры запроса
      string xstr = str_ГруппаПФ.Trim();
      object[][] psp = new object[3][];
      psp[0] = new object[2] { "@pk_Entity", гп.gd_0 };
      psp[1] = new object[2] { "@str_Группа", (string.IsNullOrEmpty(xstr)) ? DBNull.Value : (object)( xstr + "%") };
      psp[2] = new object[2] { "@int_max", гп.max_Выборка};
      xrow = null; lst_Entity = null; lst_Entity = new List<row_Entity>();
      при.tmrStart(); await wsp.Entity_SP("au_Группы_Sel", wsp.sp_Sel, psp, RowToEntity); при.tmrStop();
      . . .
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39851032
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если дату передавать, лучше делать это формате "О" (в универсальном)
...
Рейтинг: 0 / 0
Вызов хранимой процедуры из Си Шарп
    #39851033
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я имел ввиду передавать дату в виде строки, но лучше передавать в соответствующем типе
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов хранимой процедуры из Си Шарп
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]