2015-07-10 5 views
0

Я хочу проверить, существует ли имя пользователя в базе данных, и если да, в сообщении об ошибке будет указано, что «имя пользователя уже существует». теперь у меня есть этот код, но он не работает. программа по-прежнему принимает имя пользователя, даже если оно дублируется из базы данных. может кто-нибудь мне помочь? вот мой полный регистрационный код:Проверка имени пользователя не работает, когда пользователь регистрирует -asp.net

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (IsPostBack) 
     { 
      SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString); 
      conn.Open(); 
      string checkuser = "select count(*) from UserData where Username = '" + txtUser.Text + "'"; 
      SqlCommand scm = new SqlCommand(checkuser, conn); 
      int temp = Convert.ToInt32(scm.ExecuteScalar().ToString()); 
      if (temp == 1) // check if user already exist. 
      { 
       Response.Write("User already existing"); 
      } 
      conn.Close(); 
     } 
    } 
    protected void btn_Registration_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString); 
      conn.Open(); 
      string insertQuery = "insert into UserData(Username,Firstname,Lastname,Email,Password,CustomerType,DeliveryAddress,Zip,ContactNumber)values(@Username,@Firstname,@Lastname,@Email,@Password,@CustomerType,@DeliveryAddress,@Zip,@ContactNumber)"; 
      SqlCommand scm = new SqlCommand(insertQuery, conn); 
      scm.Parameters.AddWithValue("@Username", txtUser.Text); 
      scm.Parameters.AddWithValue("@Firstname", txtFN.Text); 
      scm.Parameters.AddWithValue("@Lastname", txtLN.Text); 
      scm.Parameters.AddWithValue("@Email", txtEmail.Text); 
      scm.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text)); 
      scm.Parameters.AddWithValue("@CustomerType", RadioButtonList1.SelectedItem.ToString()); 
      scm.Parameters.AddWithValue("@DeliveryAddress", txtAddress.Text); 
      scm.Parameters.AddWithValue("@Zip", txtZip.Text); 
      scm.Parameters.AddWithValue("@ContactNumber", txtContact.Text); 

      scm.ExecuteNonQuery(); 
      Session["Contact"]= txtContact.Text; 
      Session["Email"] = txtEmail.Text; 
      Session["DeliveryAddress"] = txtAddress.Text; 
      label_register_success.Text = ("Registration Successful!"); 
      //Response.Redirect("Home.aspx"); 
      conn.Close(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write("Error:" + ex.ToString()); 
     } 
    } 

ответ

0

Вы подтверждаете данные на странице_Лод? Я думаю, вы можете выбрать эти solusions

  1. Вы должны сделать это в btn_Registration_Click, прежде чем вставить данные или
  2. Может быть, вы можете изменить его, чтобы сделать в зр и бросить сообщение через него, если данные дублируется и выполняет проверку.

Это должно быть, как это (согласно решению 1)

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (IsPostBack) 
     { 
     } 
    } 
    protected void btn_Registration_Click(object sender, EventArgs e) 
    { 
     try 
     { 
      SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["RegistrationConnectionString"].ConnectionString); 
      conn.Open(); 
      string checkuser = "select count(*) from UserData where Username = '" + txtUser.Text + "'"; 
      SqlCommand scm = new SqlCommand(checkuser, conn); 
      int temp = Convert.ToInt32(scm.ExecuteScalar().ToString()); 
      if (temp > 0) // check if user already exist. 
      { 
       Response.Write("User already existing"); 
      } 
      else 
      { 
       string insertQuery = "insert into UserData(Username,Firstname,Lastname,Email,Password,CustomerType,DeliveryAddress,Zip,ContactNumber)values(@Username,@Firstname,@Lastname,@Email,@Password,@CustomerType,@DeliveryAddress,@Zip,@ContactNumber)"; 
       scm = new SqlCommand(insertQuery, conn); 
       scm.Parameters.AddWithValue("@Username", txtUser.Text); 
       scm.Parameters.AddWithValue("@Firstname", txtFN.Text); 
       scm.Parameters.AddWithValue("@Lastname", txtLN.Text); 
       scm.Parameters.AddWithValue("@Email", txtEmail.Text); 
       scm.Parameters.AddWithValue("@Password", BusinessLayer.ShoppingCart.CreateSHAHash(txtPW.Text)); 
       scm.Parameters.AddWithValue("@CustomerType", RadioButtonList1.SelectedItem.ToString()); 
       scm.Parameters.AddWithValue("@DeliveryAddress", txtAddress.Text); 
       scm.Parameters.AddWithValue("@Zip", txtZip.Text); 
       scm.Parameters.AddWithValue("@ContactNumber", txtContact.Text); 

       scm.ExecuteNonQuery(); 
       Session["Contact"]= txtContact.Text; 
       Session["Email"] = txtEmail.Text; 
       Session["DeliveryAddress"] = txtAddress.Text; 
       label_register_success.Text = ("Registration Successful!"); 
       //Response.Redirect("Home.aspx"); 
      } 
      conn.Close(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write("Error:" + ex.ToString()); 
     } 
    } 
+0

ив пробовал, но по-прежнему принимать одни и те же имена пользователей @Heinz Siahaan –

+0

Стараетесь ли вы мой отредактированный код, как и выше? Я изменяю if '(temp == 1)' to 'if (temp> 0)', чтобы разместить вероятность того, что вы вставили пользователя более одного с тем же именем пользователя раньше. –

+0

.yes сэр. его не читает второй «scm» в другой части. он говорит, что он уже используется в качестве родительской области для обозначения чего-то другого. @Heinz Siahaan –

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