Как вставить и отредактировать уникальное значение с помощью процедуры хранения
мой стол выглядит вот так
create table tbl_user ( userID int Primary Key identity (1,1), userName varchar(20), pass varchar(30), email varchar(50), userRole int, userPhoto varchar(100), userStatus int, ); //my store procedure is create PROCEDURE spCreateUser @userName varchar(20), @pass varchar(30), @email varchar(50), @userRole int, @userPhoto varchar(100), @userStatus int, @result int output AS BEGIN IF EXISTS(SELECT * FROM tbl_user WHERE userName= @userName) SET @result = 1 ELSE BEGIN SET @result = 0 INSERT INTO tbl_user(userName,pass,email,userRole,userPhoto,userStatus) VALUES(@userName,@pass,@email,@userRole,@userPhoto,@userStatus) END return @result END
asp.net вот такой код на c#
protected void btn_insert_Click(object sender, EventArgs e) { string CS = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString; string path = string.Concat(Server.MapPath("~/UploadFile/" + fu_photo.FileName)); fu_photo.SaveAs(path); using (SqlConnection con = new SqlConnection(CS)) { SqlCommand cmd = new SqlCommand("spCreateUser", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("userName", txt_username.Text); cmd.Parameters.AddWithValue("pass", txt_pass.Text); cmd.Parameters.AddWithValue("email", txt_email.Text); cmd.Parameters.AddWithValue("userRole", ddl_role.SelectedValue); cmd.Parameters.AddWithValue("userPhoto", path); cmd.Parameters.AddWithValue("userStatus", ddl_status.SelectedValue); con.Open(); int k = cmd.ExecuteNonQuery(); if (k != 0) { lblMsg.Text = "Record Inserted Succesfully into the Database"; lblMsg.ForeColor = System.Drawing.Color.CornflowerBlue; } con.Close(); } }
Что я уже пробовал:
я хотел бы сохранить уникальное имя пользователя и пароль в таблице с помощью storeprocedture, пожалуйста, также сообщите update opration тоже. как я использую этот sp в своем коде.
Спасибо
CHill60
Вы уже используете sp в своем коде. Не храните пароли в базе данных.
UDTWS
Спасибо за ответ,
но этот код не работает из-за того, что не знаю, насколько точно я использую этот sp. got сообщение об ошибке вы не передаете результат.
CHill60
Вам нужно процитировать точное сообщение об ошибке
UDTWS
Процедура или функция 'spCreateUser' ожидает параметр '@result', который не был указан.
UDTWS
я сохраню свой пароль с помощью шифрования. а если не сохранить в базе данных, то что же мне делать?
CHill60
Ознакомиться с данной статьей, СР - Соленое хэширование паролей - делаем это правильно[^]
UDTWS
я изменяю в своем магазине процедуру, как показано ниже
изменить процедуру spCreateUser
@userName varchar(20),
@pass varchar(30),
@email varchar(50),
@userRole int,
@userPhoto varchar(100),
@userStatus int
АС
IF (SELECT COUNT(*) FROM tbl_user WHERE userName= @userName) < 1
НАЧАТЬ
Вставить в tbl_user(userName,pass,email,userRole,userPhoto,userStatus)
Значения(@имя,@пасс, электронная почта,@userRole,@userPhoto,@userStatus)
КОНЕЦ
это работает, но если не вставить значение из-за дубликата сообщения об ошибке how mange в любом методе C#