2015-08-27 5 views
-2
protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
protected void Page_Load(object sender, EventArgs e) 
    { 

    } 
protected void registerBtn_Click1(object sender, EventArgs e) 
    { 
    Page.Validate(); 
    if (Page.IsValid) 
     { 
     outputlabel.Text = "Succesfully Registered"; 
     myConnection.Open(); 
     string query = "Insert into Users (FirstName,LastName,Gender,DateOfBirth, 
     Email_Id,Password) Values (@fn,@ln,@gen,@dob,@em,@pas)"; 
     SqlCommand insertCommand = new SqlCommand(query, myConnection); 
     insertCommand.Parameters.AddWithValue("@fn", fname.Text); 
     insertCommand.Parameters.AddWithValue("@ln", lname.Text); 
     insertCommand.Parameters.AddWithValue("@gen", gender_dd.SelectedItem.Text); 
     insertCommand.Parameters.AddWithValue("@dob", date.Text); 
     insertCommand.Parameters.AddWithValue("@em", email.Text); 
     insertCommand.Parameters.AddWithValue("@pas", password.Text); 
     insertCommand.ExecuteNonQuery(); 
     myConnection.Close(); 
     } 
    } 
    } 
} 

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

ответ

0

Вам необходимо запустить инструкцию SQL, которая проверяет, существует ли пользователь в базе данных до, выполняя инструкцию INSERT into USERS.

Так приведенный ниже код будет проверить, если пользователь уже существует на основе адреса электронной почты и значений пароля они поставляли.

string userInvalid = "The username entered is invalid, please choose another." 
string checkDatabase = "SELECT * FROM Users WHERE Email_Id = @em AND Password = @pas"; 
SqlCommand command = new SqlCommand(checkDatabase, myConnection); 
command.Parameters.AddWithValue("@em", email.Text); 
command.Parameters.AddWithValue("@pas", password.Text); 
command.ExecuteNonQuery(); 
SqlDataReader reader = cmd.ExecuteReader(); 

if (reader.HasRows) { 
    outputlabel.Text = userInvalid; 
} 
else 
{ 
    // execute your original SQL query 
} 
+0

спасибо, но теперь я получаю эту ошибку: ссылка на объект не установлена ​​в экземпляр объекта. Как я могу избавиться от этого? – ifrah

+0

userAlreadyExist = (int) cmd.ExecuteScalar()> 0; На этой строке кода show error (выполнение скаляра выполнения, переданного int, а не проверка DBNULL), как я могу это исправить? – ifrah

+0

@smoggers дал вам правильный ответ, но вы должны подумать о том, как оптимизировать код. При этом вы в настоящее время выполняете два вызова на ваш SQL Server. Вы можете либо добавить уникальный ограничитель в свою таблицу, когда у вас есть повторяющиеся данные, будет выведено исключение, чтобы вы могли обработать его или создать функцию, которая будет иметь выходной параметр, где вы можете вернуть «код», чтобы узнать, удалась ли регистрация или нет. Оба предложения делают только один вызов SQL Server. –

Смежные вопросы