Записи в базе данных не обновляются или не вставляются данные с помощью хранимой процедуры и C#
Я вставляю и обновляю данные в базу данных MS SQL с помощью хранимой процедуры в sql. Это происходит при нажатии кнопки, SQL-скрипт работает при запуске в SQL Management studio, но не в моей программе. Мой код выглядит следующим образом.
С#
protected void Button1_Click(object sender, EventArgs e) { /**String docID = docID_txt.Text; String pass = pass_txt.Text;**/ System.Data.SqlClient.SqlCommand sqlCmd = new System.Data.SqlClient.SqlCommand(); System.Data.SqlClient.SqlConnection connection = new System.Data.SqlClient.SqlConnection("Data Source=UPHMC-DC37; Initial Catalog=TrainingDB_UPHMC; User ID=sa; Password=2016Bizbox"); sqlCmd = new System.Data.SqlClient.SqlCommand("A_Update_DoctorsPass_PFMonitor", connection); sqlCmd.Parameters.AddWithValue("@docID", docID_txt.Text.ToString()); sqlCmd.Parameters.AddWithValue("@pass", pass_txt.Text.ToString()); /**sqlCmd.CommandText = "Execute A_Update_DoctorsPass_PFMonitor";**/ sqlCmd.CommandType = System.Data.CommandType.StoredProcedure; connection.Open(); sqlCmd.ExecuteNonQuery(); connection.Close(); }
хранимая процедура:
USE [X] GO /****** Object: StoredProcedure [dbo].[A_Check_UserAccess_3] Script Date: 3/12/2018 1:43:57 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE Procedure [dbo].[A_Update_DoctorsPass_PFMonitor] --Declare @docID as varchar(15), @pass as varchar(100) --set @EmpID = '4025' --set @Pass = '1209' AS IF EXISTS(select A_PFMonitoring_Users.usercode from A_PFMonitoring_Users where A_PFMonitoring_Users.usercode = @docID) update A_PFMonitoring_Users set A_PFMonitoring_Users.userpass=@pass where A_PFMonitoring_Users.usercode=@docID ELSE insert into A_PFMonitoring_Users values(@docID, @pass)
Что я уже пробовал:
Я уже пробовал использовать необработанный sql-оператор, а затем прыгнул в хранимую процедуру, но все еще не работал.
Richard Deeming
НИКОГДА храните пароли в виде обычного текста!
Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хэширование паролей - делаем это правильно[^]
Также, НИКОГДА подключитесь к базе данных как sa
Это неограниченный пользователь, который может быть использован для уничтожения вашей базы данных, вашего сервера и, возможно, даже вашей сети. Вместо этого подключитесь как пользователь, который имеет только те разрешения, которые требуются вашему приложению.
Особенно тревожно, учитывая название хранимой процедуры - вы, кажется, пишете приложение для работы с медицинскими записями. Я могу только надеяться, что это школьный проект, а не что-то, предназначенное для реального использования!