Ashley Viray Ответов: 2

Записи в базе данных не обновляются или не вставляются данные с помощью хранимой процедуры и 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 Это неограниченный пользователь, который может быть использован для уничтожения вашей базы данных, вашего сервера и, возможно, даже вашей сети. Вместо этого подключитесь как пользователь, который имеет только те разрешения, которые требуются вашему приложению.

Особенно тревожно, учитывая название хранимой процедуры - вы, кажется, пишете приложение для работы с медицинскими записями. Я могу только надеяться, что это школьный проект, а не что-то, предназначенное для реального использования!

2 Ответов

Рейтинг:
2

Wendelius

Одним из возможных источников ошибок является то, что вы не определяете имена столбцов при вставке данных. Если столбцы расположены в другом порядке, вы можете в конечном итоге вставить их, но не в те столбцы. В этом случае вы не найдете новых вставленных строк.

Попробуйте изменить вставку на

insert into A_PFMonitoring_Users (usercode, userpass) values(@docID, @pass)

Кроме того, поскольку вы обновляете только одну таблицу, вы можете упростить обновление, удалив псевдонимы. Например
update A_PFMonitoring_Users set userpass=@pass where usercode=@docID


Рейтинг:
0

Vishal S. Kumbhar

проверьте с помощью отладчика, правильно ли открывается ваше соединение, а затем проверьте выполнение Sp с параметрами в sql server.