Как передать пользовательский ввод в качестве переменной для хранимой процедуры C#, .NET 4.8, ASP.NET MVC, SQL Server ⇐ C#
Как передать пользовательский ввод в качестве переменной для хранимой процедуры C#, .NET 4.8, ASP.NET MVC, SQL Server
Я новичок и хотел реализовать этот проект на практике, но не могу понять этого хоть убей. Проект построен с использованием C#, .NET Framework, ASP.NET MVC и Microsoft SQL Server.
Проект должен иметь возможность принимать введенные пользователем данные («OrderNumber») и передавать их в качестве переменной в хранимую процедуру. Процедура проверяет БД на наличие строки в таблице с этим номером заказа. Если он не найден, он выдает ошибку, а если находит, проверяет другой столбец под названием «ScanStatus». Это логическое значение: если оно равно 1, оно выдает ошибку «уже отсканировано», а если оно равно 0, оно обновляется до 1. Я не могу заставить это работать хоть убей, но вот код ниже. Любая помощь будет очень признательна.
Это контроллер
с использованием SpeedPass.Data; использование системы; использование System.Collections.Generic; использование System.ComponentModel.DataAnnotations.Schema; используя System.Linq; использование System.Web; использование System.Web.Mvc; пространство имен SpeedPass.Controllers { общественный класс OrderController: Контроллер { частный SpeedPassDbContext db = новый SpeedPassDbContext (); public ActionResult VerifyScanStatus (строка Ordr_Number) { // Получаем заказ из базы данных по номеру заказа var order = db.Orders.FirstOrDefault(o => o.Order_Number == Ordr_Number); если (порядок!= ноль) { // Проверка столбца состояния сканирования если (order.Scan_Status == true) { ViewBag.Message = "Статус сканирования: Просканировано"; } иначе, если (order.Scan_Status == false) { ViewBag.Massage = "Статус сканирования: Не сканировано"; } еще { ViewBag.Message = "Статус сканирования: Неизвестно"; } } еще { ViewBag.Message = "Заказ не найден."; } вернуть просмотр(); } // Не забудьте удалить DbContext защищенное переопределение void Dispose (удаление bool) { если (удалить) { БД.Dispose(); } base.Dispose(удаление); } } } Это класс модели:
с использованием системы; использование System.Collections.Generic; использование System.ComponentModel.DataAnnotations; используя System.Linq; использование System.Web; пространство имен SpeedPass.Models { Приказы общественного класса { [Ключ] общественная строка Order_Number {get; набор; } [Необходимый] общественная строка Customer_Number {get; набор; } [Необходимый] общественный bool Scan_Status {получить; набор; } } } Это DbContext
с использованием системы; использование SpeedPass.Models; использование System.Collections.Generic; использование System.Data.Entity; используя System.Linq; использование System.Web; пространство имен SpeedPass.Data { общедоступный класс SpeedPassDbContext: DbContext { public SpeedPassDbContext() : base("Источник данных=SBSQL\\SB_SANDBOX_DB;Начальный каталог=testDB;Встроенная безопасность=True;Время ожидания соединения=30;Шифрование=False;Сертификат доверенного сервера=False;Намерение приложения=ReadWrite;Отказоустойчивость нескольких подсетей= ЛОЖЬ") { } public DbSet Orders {get; набор; } public DbSet Клиенты {get; набор; } } } Это хранимая процедура
Используйте [testDB] ИДТИ УСТАНОВИТЬ ANSI_NULL ВКЛ. ИДТИ ВКЛЮЧИТЬ QUOTED_IDENTIFIER ИДТИ ИЗМЕНИТЬ ПРОЦЕДУРУ [dbo].[UpdateScanStatus] @OrderNumber варчар(8) КАК НАЧИНАТЬ ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ заказов, ГДЕ Order_Number = @OrderNumber) Начинать ОБЪЯВИТЬ БИТ @ScanStatus; ВЫБЕРИТЕ @ScanStatus = ScanStatus ИЗ заказов ГДЕ Номер_заказа = @Номер_заказа ЕСЛИ @ScanStatus = 1 НАЧИНАТЬ RAISERROR('Заказ уже проверен!', 23,1); КОНЕЦ ЕЩЕ НАЧИНАТЬ ОБНОВИТЬ заказы УСТАНОВИТЬ Статус_Сканирования = 1 ГДЕ Order_Number = @OrderNumber НАПЕЧАТАЙТЕ 'Успешно!'; КОНЕЦ КОНЕЦ ЕЩЕ НАЧИНАТЬ RAISERROR('Ордер не существует!'22,1); КОНЕЦ КОНЕЦ; Я хотел бы предоставить здесь больше информации, хотя, поскольку я новичок, я не знаю, что исследовать. Я просматривал документацию Microsoft, уголок C# и некоторые другие сайты, использующие разные версии фреймворков, а также инструменты построения лесов. В значительной степени до этого момента методом проб и ошибок. Хранимая процедура занимается поиском и обновлением столбцов БД, а также обработкой ошибок.
Я новичок и хотел реализовать этот проект на практике, но не могу понять этого хоть убей. Проект построен с использованием C#, .NET Framework, ASP.NET MVC и Microsoft SQL Server.
Проект должен иметь возможность принимать введенные пользователем данные («OrderNumber») и передавать их в качестве переменной в хранимую процедуру. Процедура проверяет БД на наличие строки в таблице с этим номером заказа. Если он не найден, он выдает ошибку, а если находит, проверяет другой столбец под названием «ScanStatus». Это логическое значение: если оно равно 1, оно выдает ошибку «уже отсканировано», а если оно равно 0, оно обновляется до 1. Я не могу заставить это работать хоть убей, но вот код ниже. Любая помощь будет очень признательна.
Это контроллер
с использованием SpeedPass.Data; использование системы; использование System.Collections.Generic; использование System.ComponentModel.DataAnnotations.Schema; используя System.Linq; использование System.Web; использование System.Web.Mvc; пространство имен SpeedPass.Controllers { общественный класс OrderController: Контроллер { частный SpeedPassDbContext db = новый SpeedPassDbContext (); public ActionResult VerifyScanStatus (строка Ordr_Number) { // Получаем заказ из базы данных по номеру заказа var order = db.Orders.FirstOrDefault(o => o.Order_Number == Ordr_Number); если (порядок!= ноль) { // Проверка столбца состояния сканирования если (order.Scan_Status == true) { ViewBag.Message = "Статус сканирования: Просканировано"; } иначе, если (order.Scan_Status == false) { ViewBag.Massage = "Статус сканирования: Не сканировано"; } еще { ViewBag.Message = "Статус сканирования: Неизвестно"; } } еще { ViewBag.Message = "Заказ не найден."; } вернуть просмотр(); } // Не забудьте удалить DbContext защищенное переопределение void Dispose (удаление bool) { если (удалить) { БД.Dispose(); } base.Dispose(удаление); } } } Это класс модели:
с использованием системы; использование System.Collections.Generic; использование System.ComponentModel.DataAnnotations; используя System.Linq; использование System.Web; пространство имен SpeedPass.Models { Приказы общественного класса { [Ключ] общественная строка Order_Number {get; набор; } [Необходимый] общественная строка Customer_Number {get; набор; } [Необходимый] общественный bool Scan_Status {получить; набор; } } } Это DbContext
с использованием системы; использование SpeedPass.Models; использование System.Collections.Generic; использование System.Data.Entity; используя System.Linq; использование System.Web; пространство имен SpeedPass.Data { общедоступный класс SpeedPassDbContext: DbContext { public SpeedPassDbContext() : base("Источник данных=SBSQL\\SB_SANDBOX_DB;Начальный каталог=testDB;Встроенная безопасность=True;Время ожидания соединения=30;Шифрование=False;Сертификат доверенного сервера=False;Намерение приложения=ReadWrite;Отказоустойчивость нескольких подсетей= ЛОЖЬ") { } public DbSet Orders {get; набор; } public DbSet Клиенты {get; набор; } } } Это хранимая процедура
Используйте [testDB] ИДТИ УСТАНОВИТЬ ANSI_NULL ВКЛ. ИДТИ ВКЛЮЧИТЬ QUOTED_IDENTIFIER ИДТИ ИЗМЕНИТЬ ПРОЦЕДУРУ [dbo].[UpdateScanStatus] @OrderNumber варчар(8) КАК НАЧИНАТЬ ЕСЛИ СУЩЕСТВУЕТ (ВЫБЕРИТЕ 1 ИЗ заказов, ГДЕ Order_Number = @OrderNumber) Начинать ОБЪЯВИТЬ БИТ @ScanStatus; ВЫБЕРИТЕ @ScanStatus = ScanStatus ИЗ заказов ГДЕ Номер_заказа = @Номер_заказа ЕСЛИ @ScanStatus = 1 НАЧИНАТЬ RAISERROR('Заказ уже проверен!', 23,1); КОНЕЦ ЕЩЕ НАЧИНАТЬ ОБНОВИТЬ заказы УСТАНОВИТЬ Статус_Сканирования = 1 ГДЕ Order_Number = @OrderNumber НАПЕЧАТАЙТЕ 'Успешно!'; КОНЕЦ КОНЕЦ ЕЩЕ НАЧИНАТЬ RAISERROR('Ордер не существует!'22,1); КОНЕЦ КОНЕЦ; Я хотел бы предоставить здесь больше информации, хотя, поскольку я новичок, я не знаю, что исследовать. Я просматривал документацию Microsoft, уголок C# и некоторые другие сайты, использующие разные версии фреймворков, а также инструменты построения лесов. В значительной степени до этого момента методом проб и ошибок. Хранимая процедура занимается поиском и обновлением столбцов БД, а также обработкой ошибок.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Сбой при выполнении хранимой процедуры C#/SQL Server/RepoDB 1.13.1 для выходных параметров
Anonymous » » в форуме C# - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как PHP получает доступ к выходным параметрам хранимой процедуры SQL Server
Anonymous » » в форуме Php - 0 Ответы
- 105 Просмотры
-
Последнее сообщение Anonymous
-